Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите с умножением. (https://javascript.ru/forum/misc/51164-pomogite-s-umnozheniem.html)

27NataRUS 27.10.2014 09:33

Помогите с умножением.
 
Здравствуйте!
Скрипт не хочет считать с дробным числом, отсекает всё после запятой. Подскажите, пожалуйста, что не так?
<form class="user_form" action="" name="form-5">
<select onchange="calc()" id="type_design" class="form-control">
			<option selected disabled>-- Продукция из гранита --</option>
            <option value="4490">African Raimbow</option>
            <option value="4090">African Red</option>
            <option value="2990">Azul Noce</option>
			<option value="2290">Azul Platino</option>
			<option value="2790">Baltic Brown</option>
			<option value="6090">Bethel White</option>
			<option value="2890">Bianco Cristal</option>
			<option value="1790">Bianco Sardo</option>
			<option selected disabled>-- Продукция из мрамора --</option>
			<option value="3990">Arabescato Altissimo II</option>
            <option value="2690">Arabescato Cervaiole IV</option>
            <option value="3990">Bardiglio Imperiale</option>
			<option value="3990">Bianco Carrara C</option>
			<option value="2690">Bianco Carrara CD</option>
			<option value="1690">Bianco Carrara D</option>
			<option value="4290">Bianco Gioia C</option>
			<option value="1990">Bianco Perlino</option>
</select>
Кол-во: <input type="text" id="count" value="1" onchange="calc()" /> м<sup>кв</sup>
        <div>Предварительная стоимость: <span id="result">0</span> руб.</div>
</form>

function calc() {
            var type_design = document.getElementById("type_design");
            var count = document.getElementById("count");
            var result = document.getElementById("result"); 
 
            var price = 0;
            price += parseInt(type_design.options[type_design.selectedIndex].value);
            price = parseInt(count.value) * price;
 
            result.innerHTML = price;
        }

ksa 27.10.2014 09:37

Цитата:

Сообщение от 27NataRUS
Скрипт не хочет считать с дробным числом, отсекает всё после запятой. Подскажите, пожалуйста, что не так?

Так ты везде используешь parseInt()...

27NataRUS 27.10.2014 10:04

Ух ты, круто! Спасибо! Убрала то, что сказали, теперь считает нормально. :)
А ещё не могли бы подсказать, можно ли сделать, чтобы при вводе кол-ва не с точкой, а с запятой, тоже выводился результат? А то NaN выдаёт.

рони 27.10.2014 10:19

27NataRUS,
http://javascript.ru/forum/events/44...tml#post291353
14 строка там

ksa 27.10.2014 11:08

Цитата:

Сообщение от 27NataRUS
можно ли сделать, чтобы при вводе кол-ва не с точкой, а с запятой, тоже выводился результат?

Как вариант, менять запятую на точку...

var val='123,456';
alert(val.replace(',','.'));

demoniqus 29.10.2014 15:22

Простой способ привести число, написанное строкой, к числовому типу:
'1.01' * 1
При этом не надо использовать никакие функции. Скорее всего parseInt приводит к эффекту работы с целыми числами, характерной для некоторых языков, когда дробная часть отсекается типа 4/3=1, хотя на самом деле должно получиться 1,333333
Если мешается запятая:
'1,01'.replace(/,/, '.')
Судя по всему ты пока еще не очень освоилась в этом языке. Вот тебе еще задачка: сложи в JS (прямо в отладчике браузера) .7+.1. Что получишь? Думаю, что не 0.8
А потом попробуй Math.round((.7+.1)*10)/10
Вот и все секреты работы с числами.

ruslan_mart 29.10.2014 19:40

Цитата:

Сообщение от demoniqus
Простой способ привести число, написанное строкой, к числовому типу:
'1.01' * 1

var n = +'1.01';
alert(typeof n);


Часовой пояс GMT +3, время: 14:07.