el-input值精度丢失问题:el-inpu值*100单位转换出现许多位小数

这期需求是有一个搜索功能来的,页面拿的数据单位是m,服务端接收的要cm,本来是很简单来的*100发到服务端,结果被测试同学测出了下面的鬼畜BUG:

众所周知:js中0.1+0.2!==0.3的,因为js使用的双精度浮点,所以在计算机内部存储数据的编码会出现误差;

这期需求的话是允许用户输入两位小数,项目中有用到自定义指令限制只能输入两位;排错的时候发现只有输入的小数后两位大于5的时候会出现上边的鬼畜BUG,例如(15.99)之类的,(15.33)就不会有这种问题.....,急着上线就用Math.round(value * 100)解决了问题.

再记录一下一个保留两位小数的方法:

fomatFloat(src) {
      return Math.round(src * Math.pow(10, 2)) / Math.pow(10, 2);
    }

上边的数字2是位数,可以提出来再封装,需要保留几位小数传几.

简单记一下,接着修BUG.

猜你喜欢

转载自blog.csdn.net/m0_58481462/article/details/126585030