需要一种以数字格式存储长数字的方法(非科学)

时间:2018-01-10 08:09:53

标签: excel vba excel-vba

我如何以数字格式存储非常大的数字而不是科学的 请记住,我将存储的数字对于数据类型来说太大了 我将其设置为字符串 我有一个带有命令按钮和文本框的用户窗体。 以下是示例代码:

Private Sub Cmd_Click()

 Dim bits As Integer
 Dim out As String

 bits = 64
 out = 2 ^ (bits - 1)

 Txt_Output.Value = out

End Sub

以上将返回:9.22337203685478E + 18。 但我想要9223372036854775807 谁能解释如何避免这种情况?

提前致谢。

P.S。我希望避免使用数组。

1 个答案:

答案 0 :(得分:1)

您可以使用Decimal数据类型和计算例程的修改来实现特定计算:

Private Sub Cmd_Click()

 Dim bits As Integer
 Dim out As Variant
 Dim i As Long
 bits = 64
 out = CDec(1)
 For i = 1 to bits - 1
     out = out * 2
 Next

 Txt_Output.Value = out

End Sub

通过强制out成为Variant/Decimal,计算在计算时不会失去精确度。但是,某些内容(例如CDec(2) ^ CDec(63))仍会失去精度,因为使用中间Double精度进行计算,因此您需要非常小心地进行计算。

这可能会为您提供有关如何概括该方法以获得所需内容的线索。

如果您有64位Excel,则可以使用LongLong数据类型。