这个用js怎么解决,我们是金融公司,所以希望有好的解决方案,两个数同时放大也一样
反对所有“转成整数做完转回去”的答案。
首先,精度计算,尤其涉及钱的问题,乘100再除100并不能解决问题,例如0.58*100=57.99999
不仅限于JS,任何编程语言,只要是按照IEEE标准的浮点数(几乎所有语言),它的存储结构就限制了它做不到精度计算(顺带一提,相等的判断用==很多时候也是错的,标准的做法是a-b < 0.000001
),换句话说,只要用了语言中的浮点数(JS里就是所有Number),就会丢精度
具体我不多做解释,贴一下鸟哥的科普文 => http://www.laruence.com/2013/03/26/2884.html
要正确地处理这个问题,唯一的途径就是不使用浮点数,而使用其他类型(比如字符串)来进行运算,评论中有人提的math.js可以通过选项来支持,背后封装的 https://github.com/MikeMcl/decimal.js/ 这个方案
javascript天生的浮点数机制注定它不应该用于需要精确计算的应用中,虽然有好的解决方案,当对于需要精确计算的建议还是交给后台(非nodejs)来完成。曾经有人用nodejs去做3D打印,结果你懂的。。。
证明 0.99999... = 1
cause: 0.99999... 9 = 0.99999... (10 -1 ) = 9.99999.. - 0.99999... = 9 = 1 * 9
so: 0.99999... = 1
如果不是金融的话,取一下小数位数吧
8 回答5.8k 阅读✓ 已解决
9 回答9.2k 阅读
6 回答4.7k 阅读✓ 已解决
5 回答3.5k 阅读✓ 已解决
5 回答8k 阅读✓ 已解决
3 回答10.3k 阅读✓ 已解决
4 回答7.9k 阅读✓ 已解决
解决方案就是
别用js进行任何商业行为
。