-1

Please note, I am suprised with the below problem, I have two values to be divided in TextBox T1 and T2. I am dividing the same to get Amount And not Getting the Exact Amount. Rather then getting the Amount in Fraction 00000001.

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

Note: I can't round up the values since the vales are Exchange Rates so vary according to currency.

4

2 回答 2

1

这是由于浮点值的精度有限造成的。有关详细信息,请参阅浮点指南

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

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

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

然后t2表示为3.3333333333,它尽可能接近给定精度。是 100 倍大的东西t2333.3333333300t1实际上表示为333.3333333333。它完全是 100 次t2,因为对于不同的数字在不同的点应用了舍入/截断。


与浮点舍入问题一样,解决方法是改用十进制类型。查看上述指南中的Javascript 备忘单,了解解决方法。

于 2013-06-20T11:28:14.453 回答
0

就像 Felix Kling 说的那样,不要使用浮点值。或者如果要保留整数,请使用 parseInt。

 var t1=5623.52;
 var t2=56.2352;
 var t3=parseInt(t1/t2);
于 2013-06-20T11:29:05.217 回答