如何将价格限制为小数点后 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">£</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事件[重复]