本文主要是介绍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.
这篇关于el-input值精度丢失问题:el-inpu值*100单位转换出现许多位小数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!