js中浮点数计算问题

为什么js中var res=457.4+789.8的结果是1247.1999999999998而不是1247.2

阅读 2.7k
3 个回答

javascript中浮点数的计算是以2进制计算的,所以存在失精问题。可以使用toFixed()方法解决

IEEE754的锅。两个操作数提前乘10然后结果再除10就好了。可以参考下这里

有些小数以二进制表示位数是无穷的,比如 1.1,程序实际上无法真正的表示 1.1,而只能做到一定程度上的准确(1.09999999999999999),这是无法避免的精度丢失。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题