【发布时间】:2019-02-05 12:45:21
【问题描述】:
我一直在尝试在vba 中创建类似于DEC_MAX 常量的东西。
问题是,有点棘手,因为没有Decimaldata-type!
最接近有效小数的是 CDec() 定义的函数:
返回作为表达式结果的十进制数据值 强制转换为十进制
所以很自然,我认为任何潜在的溢出值都会被强制到最大可实现的Decimal。我尝试从MSDN Documentation 插入最大十进制vb.net 值
但请注意,这是真的,因为尝试这样做会导致溢出:
那么如何计算最接近十进制最大值的近似值呢?我尝试了这个“computer-bricking”丑陋的代码循环:
Private Sub brick_my_Excel()
On Error Resume Next
x = 79228162514264337593543950335 'let's let it auto-coerce i guess
Do
Debug.Print(x)
x = x - 1
Loop
End Sub
然而,这完全抑制了溢出,以几乎类似字符串的方式打印 x,而不用过多关注计算。
所以,
- 如何计算它?
- 我们可以传递给
CDec()函数的最大可能表达式是多少?
【问题讨论】:
-
一个 IDE 错误? - 我输入
Debug.Print CDec(79228162514264337593543950335),当我点击离开该行时IDE会自动将其转换为Debug.Print CDec(7.92281625142643E+28)(双文字,因为没有十进制文字ofc)如果我按F5运行我得到一个溢出 i> 错误(不正确)。如果我回到该行,删除并重新输入CDec然后 F5 再次运行它可以工作并打印79228162514264300000000000000
标签: vba vb.net excel vba exception error-handling limit