【解决方案】js小数运算出现多位小数问题

一、问题描述

在一次后台返回数据进行百分率转换过程中,出现部分数据显示异常,比如:

二、解决方案

1、最快最简便的方法 直接调用 toFixed() 函数进行四舍五入为指定小数位数的数字。

2、也可以通过操作字符串来进行计算或拼接,具体自行探索。

三、问题原因

浮点数值的最高进度是17位小数,但在进行运算的时候其精确度却远远不如整数;整数在进行运算的时候都会转成10进制; 而Java和JavaScript中计算小数运算时,都会先将十进制的小数换算到对应的二进制,一部分小数并不能完整的换算为二进制,这里就出现了第一次的误差。待小数都换算为二进制后,再进行二进制间的运算,得到二进制结果。然后再将二进制结果换算为十进制,这里通常会出现第二次的误差。

所以 0.1+0.2 != 0.3

posted @ 2018-08-02 17:51  Mr.Kay  阅读(831)  评论(0编辑  收藏  举报