Как ограничить цену до 2 знаков после запятой

Мой HTML

<div class="product-line">              
                    <a href="#" alt="close" class="btn-close" title="Remove"><img alt="remove" src="img/close.png" /></a>
                    <input class="input-text" name="product-code" type="text" placeholder="Product Code" />
                    <input class="input-text" name="product-quantity" type="text" placeholder="Quantity" />
                    <input class="input-text" name="product-discript" type="text" placeholder="Discription of Product" disabled />
                    <label class="label-sign">&pound;</label>
                    <input class="input-text price" name="product-price" type="text" placeholder="RRP Price" disabled />
                        <br>
</div>

Моя строка кода JS

price = $(this).parent("div.product-line").find("input[name=product-price]").val( Number(price).toFixed(2)  *  quantity )

В принципе, если я умножу, например, на 40,2 количество 3, я получу что-то вроде 120.600000000.... Как я могу ограничить его до 2 десятичных знаков.

Данные поступают через JSON (сделанные кем-то другим).

Я новичок в JS

4 ответа

Решение

Просто двигайся toFixed на выходе умножения вместо.

.val( ( Number(price) *  quantity ).toFixed(2) );

Попробуй это:

var price = $(this).parent("div.product-line").find("input[name=product-price]").val(( Number(price) * quantity ).toFixed(2));

Одна вещь, которую вы можете сделать, если у вас все в порядке с небольшим округлением (звучит так, как будто вы этого не сделаете, но с тем же успехом можете дать несколько предложений), это обернуть ваш результат в toFixed

(Number(price) * quantity).toFixed(2)

но, на самом деле, если вам нужна точность для чисел с плавающей запятой, вы должны рассмотреть что-то вроде bigDecimal.js

Сначала умножить, а затем использовать для фиксированного...

price = $(this).parent("div.product-line").find("input[name=product-price]").val( Number(price)  *  quantity ).toFixed(2)

jQuery для округления десятичных значений

Метод toFixed() преобразует число в строку, сохраняя указанное количество десятичных знаков.

var iNum = 12345.6789;
iNum.toFixed();    // Returns "12346": note rounding, no fractional part
iNum.toFixed(1);   // Returns "12345.7": note rounding
iNum.toFixed(6);   // Returns "12345.678900": note added zeros

Метод toPrecision() форматирует число до указанной длины.

var iNum = 5.123456;
iNum.toPrecision();    // Returns 5.123456
iNum.toPrecision(5);   // Returns 5.1235
iNum.toPrecision(2);   // Returns 5.1
iNum.toPrecision(1);   // Returns 5

Но тогда вам будет интересно, чем toPrecision() отличается от toFixed()? Ну, они разные. ToFixed () дает вам фиксированное количество знаков после запятой, тогда как другой дает вам фиксированное количество значащих цифр.

var iNum = 15.667;
iNum.toFixed(2);        // Returns "15.67"
iNum.toPrecision(2);    // Returns "16"
iNum.toPrecision(3);    // Returns "15.7"
Другие вопросы по тегам