gpt4 book ai didi

excel - (10*1.11=11.1) 评估为 FALSE。如何纠正

转载 作者:行者123 更新时间:2023-12-02 08:00:08 25 4
gpt4 key购买 nike

(10*1.11=11.1) 计算为 FALSE。

a = 10
b = 1.11
c = 11.1
' (mathematically: 10*1.11=11.1)
debug.print a*b = c

我得到的是 False(不正确)而不是 True(正确)。
我知道发生这种情况是因为二进制计数方式,因此我不得不接受它。

让它正常工作的最佳方法是什么?
将数字与小数进行比较时,以下是最佳解决方案吗?靠谱吗?

round(a*b,2) = round(c,2) 

最佳答案

当涉及 .1 时,浮点运算几乎永远不会正确。原因是.1不能表示为n的16位以内的1/2^n

这是几个数字,用它们在 float 上不会有问题,因为它们可以表示为1/2^n:

  • 0.125 = 1/2^3
  • 0.5 = 1/2^1
  • 0.375 = 1/2^2 + 1/2^3

因此,type decimal来解决问题。这是最好的方法:

Sub TestMe()

Dim a, b, c 'declaring as Variant, as Decimal cannot be declared in VBA

a = CDec(10)
b = CDec(1.11)
c = CDec(11.1)
Debug.Print a * b = c

End Sub

关于excel - (10*1.11=11.1) 评估为 FALSE。如何纠正,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58449141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com