求助,为什么这个函数里的45.7-45等于的是0.7000...03?

原公式是=IF(LEN(R1-INT(R1))>=6,TRUE,FALSE),这个R1单元格的数据就是45.7。我看了下R1单元格格式是常规,而且左下角确实显示的就是45.7而不是有更小的小数部分。按理来说结果应该是0.7然后len函数返回3,if函数再返回FALSE,但是图中却是0.7000...03,len函数返回17导致if函数返回TRUE,是不是这个int函数的问题?
广东省
浏览 235
收藏
2
分享
2 +1
3
+1
全部评论 3
 
懒得批爆
懒得批爆

创作者俱乐部成员

=IF(LEN(ROUND(R1-INT(R1),3))>=6,TRUE,FALSE) 这是函数设计依据的BUG,不懂原理的都会跟你说这是计算精度的问题, 实则是函数设计依据的BUG,跟计算机原理有关,与WPS以及Excel无关。 试试这个公式 =IF(LEN(ROUND(R1-INT(R1),3))>=6,TRUE,FALSE) 关于这个BUG的具体原因,可以参考下我的帖子https://bbs.wps.cn/topic/31996
· 四川省
回复
hel
谢谢大佬~
· 广东省
回复
 
zlc
精度问题吧
· 广东省
回复