当我查看“变体数据类型”文档时,它表示子类型为double的变体可以支持最大值“1.79769313486232E308”(15位)的正值 “当包含Currency,Decimal和Double值的变量变量超出其各自的范围时,会发生错误。” 但是,当我运行以下代码时:
y = 999999999999999999999999999
y = CStr(CDBL(y))
MsgBox y
我没有收到错误,而是收到一个带有以下输出的msgbox:“1e + 27”(27是y中的位数)。
对此有何解释? “y”如何存储在内存中?
我在变体文档和CDbl函数文档中都找不到答案。
感谢。
答案 0 :(得分:3)
在为变量分配数量时,vbscript运行时将选择最佳的变体类型以匹配该数量。
在您的情况下,文字对于整数类型而言太大,因此它将其分配给double
“子类型”。
将此幅度的双倍转换为字符串将以科学计数法生成一个字符串。
至于你的文件
“1.79769313486232E308”(15位数)
有点误导。将其读作15个有效数字,这与浮点double
精度类型的精度级别有关。