这期需求是有一个搜索功能来的,页面拿的数据单位是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.