变体double子类型超过最大值

时间:2014-08-21 07:02:23

标签: vbscript double variant

当我查看“变体数据类型”文档时,它表示子类型为double的变体可以支持最大值“1.79769313486232E308”(15位)的正值 “当包含Currency,Decimal和Double值的变量变量超出其各自的范围时,会发生错误。” 但是,当我运行以下代码时:

y = 999999999999999999999999999
y = CStr(CDBL(y))
MsgBox y

我没有收到错误,而是收到一个带有以下输出的msgbox:“1e + 27”(27是y中的位数)。

对此有何解释? “y”如何存储在内存中?

我在变体文档和CDbl函数文档中都找不到答案。

感谢。

1 个答案:

答案 0 :(得分:3)

在为变量分配数量时,vbscript运行时将选择最佳的变体类型以匹配该数量。

在您的情况下,文字对于整数类型而言太大,因此它将其分配给double“子类型”。

将此幅度的双倍转换为字符串将以科学计数法生成一个字符串。

至于你的文件

  

“1.79769313486232E308”(15位数)

有点误导。将其读作15个有效数字,这与浮点double精度类型的精度级别有关。