Javascript分隔符问题

时间:2013-06-20 11:19:14

标签: javascript

请注意,我对以下问题感到很惊讶,我有两个值要分为TextBox T1和T2。我正在划分相同以获得金额而不是获得确切金额。而不是获得分数00000001中的金额。

Example:
 var t1=5623.52;
 var t2=56.2352;
 var t3=5623.52/56.2352; //100.0000000001

注意:我无法对价值进行舍入,因为价格是汇率,因此根据货币而有所不同。

2 个答案:

答案 0 :(得分:1)

这是由浮点值的精度有限引起的。有关详细信息,请参阅The Floating Point Guide

简短版本是您的数字的0.52小数部分无法用二进制表示,就像1/3无法用十进制精确表示一样。由于精度的位数有限,较大的数字比较小的数字略精确,因此不是100倍。

如果这没有意义,假设你正在处理三分之一,并假装数字表示为小数,则为十位小数。如果您声明:

var t1 = 1000.0 / 3.0;
var t2 = 10.0 / 3.0;

然后t2表示为3.3333333333,它与用给定精度表示的一样接近。比t2大100倍的东西是333.3333333300,但t1实际上表示为333.3333333333。它是正好是t2的100倍,因为在不同的点上针对不同的数字应用了舍入/截断。


与浮点舍入问题一样,修复方法是使用十进制类型。请查看上述指南中的Javascript cheat-sheet,了解如何解决此问题。

答案 1 :(得分:0)

像Felix Kling所说,不要使用浮点值。 如果要保留整数,请使用parseInt。

 var t1=5623.52;
 var t2=56.2352;
 var t3=parseInt(t1/t2);