日期:2014-05-16  浏览次数:20381 次

JS中 这类问题是怎么解决的
funAlert()
{
  var a=53855.45;
  var b=2395.46;
  var c=a+b;
}


c=56250.90999999999999;

这个类似的怎么解决能保证 结果 正确 是 c=56250.91

因为我这套系统是钱的 必须精确 就大牛给 完美解决办法.

------解决方案--------------------
http://blog.csdn.net/lifuxiangcaohui/article/details/6566710

不过我始终建议,精确计算不要放在前端给JS来做~~~
------解决方案--------------------
既然是钱的,那就放到后台去做
------解决方案--------------------
顶2、3楼
alert(c.toFixed(2))
------解决方案--------------------
<input type="button" onclick="changeTwoDecimal(56250.90999999999999)"/>
function changeTwoDecimal(x)
{
var f_x = parseFloat(x);
if (isNaN(f_x))
{
alert('function:changeTwoDecimal->parameter error');
return false;
}
var f_x = Math.round(x*100)/100;
alert(f_x);
return f_x;
}
------解决方案--------------------
JScript code

            var a=53855.45;
            var b=2395.46;
            var c=a+b;
            alert(c.toFixed(2))

------解决方案--------------------
貌似和小数点前的数字大小有关,32767.45 + 0.46就是对的,32768.45 + 0.46就有问题了,int取值范围是-32728~32767,会不会和这个有关,另外算钱这种事情还是放后台做吧,前台也太不安全了
------解决方案--------------------
同问,楼上怎么解决的
------解决方案--------------------
探讨

貌似和小数点前的数字大小有关,32767.45 + 0.46就是对的,32768.45 + 0.46就有问题了,int取值范围是-32728~32767,会不会和这个有关,另外算钱这种事情还是放后台做吧,前台也太不安全了