javascript做浮点数运算精确问题
2004-08-06 16:09
585 查看
在用javascript做浮点数运算时,当次数变多时,就会有误差(不作除法);
如0.01+0.01+0.01+0.01+0.01就可能等于0.04999999也许会是0.050000000001之类的,在c语言里浮点运算就会有这样的情况。
在财务软件里,这样的计算是不允许的,java里有个类可以精确的计算,但是javascript里没有类似的类,只有采用精确到第x位的方法了以下函数
//小数的四舍五入 //f是你要求精确的浮点数,size是精确到的位数
function formatfloat(f,size)
{
var tf=f*Math.pow(10,size);
tf=Math.round(tf+0.000000001);
tf=tf/Math.pow(10,size); return tf;
}
//
tf=Math.round(tf+0.000000001);
是将tf四舍五入,tf要加0.000000001是因为,根据javascript帮助,round是四舍五入,但是经我测试,0.5时,它不进位,加一点就好了(不知道为什么);实际用的效果:当我设置成精确到4位时,象0.04999999这样的数会变成0.05(达到要求,目前没发现什么问题)
如0.01+0.01+0.01+0.01+0.01就可能等于0.04999999也许会是0.050000000001之类的,在c语言里浮点运算就会有这样的情况。
在财务软件里,这样的计算是不允许的,java里有个类可以精确的计算,但是javascript里没有类似的类,只有采用精确到第x位的方法了以下函数
//小数的四舍五入 //f是你要求精确的浮点数,size是精确到的位数
function formatfloat(f,size)
{
var tf=f*Math.pow(10,size);
tf=Math.round(tf+0.000000001);
tf=tf/Math.pow(10,size); return tf;
}
//
tf=Math.round(tf+0.000000001);
是将tf四舍五入,tf要加0.000000001是因为,根据javascript帮助,round是四舍五入,但是经我测试,0.5时,它不进位,加一点就好了(不知道为什么);实际用的效果:当我设置成精确到4位时,象0.04999999这样的数会变成0.05(达到要求,目前没发现什么问题)
相关文章推荐
- [转帖]javascript做浮点数运算精确问题
- Javascript 浮点运算的问题分析与解决方法
- JavaScript浮点运算的问题
- JavaScript 浮点数运算 精度问题
- Javascript 浮点运算问题分析与解决
- JavaScript 浮点数运算的精度问题
- 关于不能够精确的对浮点数进行运算的问题
- 记一次JavaScript浮点数精确问题
- 【转】javascript 浮点数运算问题
- javascript中关于浮点数不精确问题解决方案
- javascript 浮点运算问题分析与解决
- 记录关于JavaScript 浮点数运算的精度问题
- JavaScript对浮点小数运算结果不精确bug的解决办法
- JavaScript 浮点数运算的精度问题
- JavaScript浮点运算的问题
- JavaScript 浮点数运算 精度问题
- 奇怪的js问题(JavaScript浮点运算的问题) float类型相乘的有时候 会出现错误!! 注意!!!
- JavaScript浮点数及运算精度问题
- Javascript 浮点运算精度问题分析与解决
- 【javascript】浮点数运算问题分析及解决方法