关于【吐槽贴】一言难尽的Round的一些看法
WPS寻令官 | WPS产品体验官
您没看错,这不是回复贴,这是对吐槽帖的【看法】
| 📌 |
这真的只是回应吐槽贴。
就这个问题,以前在一些计算中确实会出现这个奇怪的现象,而且昨天媳妇儿才跟我吐槽了这个槽点造成的损失。
以前工作中也遇到过这种情况,我的解决办法是拆分清单,然后去凑这个数据。
| 😣 | 今天就这个问题找到了ROUND函数的厂家(友商)讨要个说法,这是什么原因造成的 |
随后厂家很快的给出了答复:
这篇文章的地址:(鉴于社区公告https://bbs.wps.cn/topic/21585,有兴趣的朋友可以在本帖末尾处找到本帖的金山文档地址,文章地址在其中可以找到)。
原来不仅仅是ROUND函数,而是所有的浮点运算得到的结果可能都不准确。
用厂家的话说这是设计引用规范的缺陷造成的,原因如下:
存储数字时,对应的二进制数可以表示每个数字或小数。 例如,分数 1/10 在十进制记数制中可以表示为 0.1。 但是,以二进制格式的相同数字将成为以下重复的二进制小数:
0001100110011100110011(等)
此操作可以无限重复。 此数字不能在限定(有限)的空间里表示。 因此,存储此数字时,会向下舍入大约 -2.8E-17。
这个坑爹的规范还有一些限制:
下面就对厂家的说明直接截图了,面得被人说直接复制粘贴在水贴。
看样子厂家也明白了这个问题,出现#NUM!的错误提示,有可能是因为这个规范造成的数字溢出,对EXCEL来说可存储的最大数为1.79769313486232E+308(这是多少我不知道,反正很大),可以存储的最小正数为 2.2250738585072E-308(这是多少我也不知道,反正很小)。
| ❓ | 不知道WPS设计可存储的最大数和最小正数是多少?? |
厂家对于浮点运算精度的解释如下:
| ✅ | 厂家对计算精度错误Excel 提供两种补偿舍入误差的基本方法:ROUND 函数和以显示精度为准或将精度设为所显示的精度工作簿选项。 |
| ❓ | WPS对更正精度错误补偿舍入误差的方法是什么? |
最后厂家提到了这个规范的误差值是多少:
浮点数和IEEE 754 规范详细信息:(鉴于社区公告https://bbs.wps.cn/topic/21585,有兴趣的朋友可以在本帖末尾处找到本帖的金山文档地址,详细地址在其中可以找到)。
该页面基本为全篇英文,借助浏览器翻译插件应该不难阅读。
欢迎自行查阅。
借此,总算知道了造成误差的原因。
厂家对其造成误差提出了补偿方案,不知道WPS对此误差的补偿方案是什么。
这里是本帖末尾:
| 👋 | 【金山文档 | WPS云文档】 【回复吐槽】 一言难尽的Round |
创作者俱乐部成员
WPS寻令官 | WPS产品体验官
创作者俱乐部成员
WPS寻令官 | WPS产品体验官
WPS产品体验官