【问题标题】:Calculation the numbers which more than 15 digits through VBA通过VBA计算超过15位的数字
【发布时间】:2021-10-25 16:18:40
【问题描述】:

就我而言,在 VBA 中允许进行大于 15 位的计算,这会在第 15 位之后自动给你没有零 -> 更准确。

这个想法是,计算可以在 VBA 中完成。想要的结果(1,07007000700007000007654321)可以通过格式转换以字符串数据类型在excel中呈现(只是在Excel表格中显示不计算)

问题:

1 + 0.07007000700007000007654321

-> Excel 给出 1.07007000700007000008

期望值:1.07007000700007000007654321

这是我的代码:

    Sub test()
    Dim y As Double
    Dim m As String

    'cell(1,1) is where 0.07007000700007000007654321
    y = 1 + Cells(1, 1)

    m = CStr(y)

    Cells(2, 1).Value = m

    End Sub

感谢您的时间和知识,伙计们!

【问题讨论】:

  • 需要将其存储为字符串。然后解析字符串以将值添加到您关心的部分,然后将它们连接在一起。 VBA 将仅存储 15 个 sig 数字,一旦您将数字加 1,double 会将其四舍五入为 15 sig dig。
  • 还有这个stackoverflow.com/questions/32943905/…,它是长乘法的一个例子。它可以很容易地适应加法,但正如已经指出的那样,仍然需要实现所有功能,更不用说减法和除法了。如果您的问题是关于加法的,我很乐意尝试在同一行上发布答案。

标签: excel vba format


【解决方案1】:

使用 Decimal - 这需要一个声明为 Variant 的变量:

    Dim y As Variant
    Dim m As String

    'cell(1,1) is where 0.07007000700007000007654321
    y = 1 + CDec(Cells(1, 1))

    m = CStr(y)

    ' m -> "1.07007000700007000007654321"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-02
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    • 1970-01-01
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多