一言难尽的Round
wils
创作者俱乐部成员
先声明,无论WPS还是Excel,行为是一致的,所以无论你用哪个,都逃不掉一言难尽的Round,所以这里不是要提交什么bug,只是吐槽。。。
先看公式,比如这张图,A列F列是手写的数字,B列是1减A,C列G列是round公式,可以看到C列G列对于相同的数字,round的结果不同,而且是随机不同。。。
目前个人认为规律是,计算后的结果有浮点精度问题,即使是四舍五入(并非四舍六入五成双)也有舍入问题,且基本随机发生。。。
再来看宏,js宏和vba宏的表现差不多,奇怪而随机的结果,让人摸不着头脑。。。
不过就像vba里可以用decimal类型的数字精确的舍入,完全避免这个问题
js宏里可以用big.js之类的库,来实现精确的小数(注意不是浮点数)计算
如图:
vba或jsa里,用了专门的decimal库之后,round的结果终于是完全可预测的了
怎么说呢,大家用round解决一些匹配问题似乎已是常态,会计查账少1分钱也是常态,其中因为round导致的错误随机且不知道常见不常见。。。
如果你需要精确的round结果,貌似只有decimal库可以解决问题,但大家日常都在用随机的版本,你不合群就是你的错,也不知道该用不该用了。。。
创作者俱乐部成员
创作者俱乐部成员
创作者俱乐部成员
WPS函数专家
创作者俱乐部成员
创作者俱乐部成员
创作者俱乐部成员