解决浮点运算(ROUNDBANK)问题
wils
创作者俱乐部成员
前面吐槽过round,https://bbs.wps.cn/topic/31968
大家也都知道是浮点运算导致的。。。
今天论坛里又有小伙伴问ROUNDBANK为什么不准确https://bbs.wps.cn/topic/46162
就想起原来用big.js解决十进制小数运算的问题,干脆重新定义加减乘除,以消除浮点运算的误差
试了一下,貌似可以,下面是操作:
先下载big.js库,比如这里https://cdnjs.com/libraries/big.js
在宏编辑器里,文件->导入,这个big.js文件,不用管报错
在宏编辑器里,工具->选项->编译,去掉两个禁止全局的选项
然后在另一个模块里,自己重新定义加减乘除等常见运算
结果如图:
原来的公式是
=ROUNDBANK((5-4.6)/64,4)
结果是0.0063,因为在浮点运算时,5-4.6大于0.4
而bigjs模块,可以理解为,将数字当成字符串,然后按照十进制的算法进行运算,结果也可以是字符串,所以不存在浮点误差
图中就是通过自定义减法和除法,用于ROUNDBANK之后,得到了符合预期的结果
要不,wps官方提供几个基本的十进制运算函数也行哈
创作者俱乐部成员
创作者俱乐部成员
创作者俱乐部成员