今天碰到个问题:194000/10000*100 = 1939.9999999999998
运算过程中如何有效避免这种问题?
这不是BUG好么…
用浮点数就有不精确性.
要精确性就用int型
除非你用19.4*100来做为key使用,否则1939.9999999999998 和 1940有什么区别?
如果是作为key使用.那你设计就有问题
另外,补充一点,这不是JS特有的BUG(如果你说是bug的话)
任何语言都是这样的…
我用了go,lua和php做了同样的运算
只有js才这样。所以才以为是js特有的
你试试1.0/3*3,看结果是不是1
你给的这个运算全都没出现问题
你确定你算了???,请执行后再说,
都对的话,计算机就不存在精准度这个概念了
我都输出了一遍,在这个http://tool.lu/coderunner里操作的,除非这个有问题
我刚用c语言测试过, 结果是0.9的循环,呵呵
嗯,确实是设计的问题,我应该尽力避免浮点数的运算
需要保留精度的话,请用整型来模拟定点数。
1赞