如何将价格限制为小数点后 2 位 [重复]

Posted

技术标签:

【中文标题】如何将价格限制为小数点后 2 位 [重复]【英文标题】:How to restrict the price to 2 decimal points [duplicate] 【发布时间】:2014-05-06 15:14:10 【问题描述】:

我的 html

<div class="product-line">              
                    <a href="#"  class="btn-close" title="Remove"><img  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新手

【问题讨论】:

谷歌不适合你吗??? OP已经在使用toFixed了,只是放错地方了,所以不是真的重复。 @A.Wolff - 我真的在回答第一条评论,重复“如何取整数字”,我猜如果你搜索 toFixed 并阅读 MDN 文档,Google 会工作的。 @All-the-above!我认为这就是 SO 的用途 - 帮助他人学习并改善我们所知道和喜欢做的事情!!!为什么要投票给那个人。他已经说过他是新手。如果您不想提供帮助并且不在乎,只需跳过问题并处理/回答适合您的问题,例如精选问题!有时对于新手来说,事情可能会变得过于复杂或令人困惑。不要评判,但要帮助! @谢谢大家的cmets和帮助!我什至欣赏消极的 cmets,因为它有助于提高我的技能。 【参考方案1】:

只需将toFixed 移动到乘法的输出即可。

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

【讨论】:

谢谢!我不确定为什么它不起作用。 你能告诉我为什么会这样吗--- Number( $("input[name=order-total]").val(sum) ).toFixed(2); --- 不工作,提前致谢 它不起作用,因为val(sum) 返回没有 toFixed 方法的 jQuery 对象。您必须转换传入的值,如val( sum.toFixed(2) ) 谢谢!我设法用你的例子弄清楚了,但现在我明白了为什么。谢谢。【参考方案2】:

试试这个:

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

【讨论】:

谢谢您,非常感谢您的帮助。【参考方案3】:

先相乘再用固定...

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"

【讨论】:

非常感谢,感谢您的帮助。【参考方案4】:

如果你对轻微的舍入没问题(听起来你不会,但不妨给出多个建议),你可以做的一件事是将你的结果包装在 toFixed 中

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

但是,实际上,如果您需要浮点数的精度,您应该研究类似bigDecimal.js

【讨论】:

谢谢!非常感谢您的帮助。

以上是关于如何将价格限制为小数点后 2 位 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

将输入限制为小数点后2位jquery onchange事件[重复]

如何将值四舍五入到小数点后 3 位?

将 django FloatField 限制为 2 位小数

JS限制数字中的小数位数[重复]

如何在 Torch 的 GPU 上将张量的元素限制/舍入到小数点后 4 位?

如何在php中将最小值和最大值设置为小数点后2位[重复]