【问题标题】:Excel VBA Single VS Double Data TypeExcel VBA Single VS Double 数据类型
【发布时间】:2018-08-26 06:37:47
【问题描述】:

我认为这是一个简单的问题,但我很难找到答案:

我了解 Single 和 Double 数据类型存储浮点数。但我不明白他们可以代表的最大数字?

例如,如果我在这个简单的宏中使用 Single 数据类型:

Sub Float()
    Dim Result As Single
    Result = 10 / 3
    MsgBox Result
End Sub

结果是 3.333333

有 7 位数字。但是,当您查看 Single 可以容纳的范围时 - 它表明它可以容纳更多位数。

与 Double 类型相同。我将变量更改为 Double,结果是 3.33333333333333(15 位)但 Double 可以容纳更多位?

我很困惑。

【问题讨论】:

  • 精确到15位有效数字

标签: excel vba


【解决方案1】:

精度限制为最多 15 个有效数字。其他答案提到 7 代表单身。

如果您改为打印到工作表,您将看到以下内容:

Public Sub test()
    Dim s As Single
    Dim s2 As Double
    s = 10 / 3
    s2 = 10 / 3
    [A1] = "Single"
    [B1] = s
    [A2] = "Double"
    [B2] = s2
    [B1:B2].NumberFormat = "0.000000000000000000"
End Sub

关于您后来关于精度决定的问题;对此有一个国际标准。

IEEE 754

IEEE 浮点算术标准 (IEEE 754) 是 1985年制定的浮点计算技术标准 由电气和电子工程师协会 (IEEE)。这 标准解决了在多样化浮点中发现的许多问题 使它们难以可靠和便携地使用的实现。 许多硬件浮点单元现在使用 IEEE 754 标准。

有人可能会纠正我,但我相信这是普遍的标准。

对于你评论单精度维基有一个很好的解释here

您可以访问标准的here

【讨论】:

  • 我想我需要重新提出我的问题。因此,如果 Single 可以存储从 –3.402823e38 到 -1.401298E-45 的负值和 1.401298E-45 到 3.402823e38 的正值的数值 - 这些数字的位数超过 7 位 -> 如果它存储一个数字多位数 - 为什么只有 7 位数的准确度?这是我不明白的。
  • 感谢 QHarr - 我将不得不深入研究它,看看我是否能弄清楚。我希望对此有一个外行的解释!
  • 现在回答了吗?
  • 嗨 QHarr,是的,我想通了(我想)。感谢您的检查!我会指出这篇文章已被回答。 :)
【解决方案2】:

singles 以 4 个字节存储数据,它们允许 7 位精度。 doubles 以 8 个字节存储数据,它们允许 15 位精度。

这个答案VBA Double vs Single rounding 可能解释得更好。

【讨论】:

  • 更好的技术解释+1
  • 我想我需要重新提出我的问题。因此,如果 Single 可以存储从 –3.402823e38 到 -1.401298E-45 的负值和 1.401298E-45 到 3.402823e38 的正值的数值 - 这些数字的位数超过 7 位 -> 如果它存储一个数字多位数 - 为什么只有 7 位数的准确度?这是我不明白的。
  • 准确度和精度不一样。
  • 请查看我发布的最新答案 - 我希望我明白了吗?大声笑
【解决方案3】:

我在网上找到一篇很好的文章,很好地解释了浮点:

https://floating-point-gui.de/formats/fp/

据我目前所能理解的:

我的困惑源于这样一个事实,即我不明白数据类型存储的位数与数据类型可以准确计算和返回的位数之间存在差异。这是正确的吗?

例如:Single 数据类型需要 4 个字节(32 位)的存储空间。 24 位分配给有效位(带符号),8 位分配给指数。 使用 Single 数据类型的值的计算将始终返回 7 个有效数字,因为这是可以承诺的精度级别?

我希望我理解正确...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多