当我在看"变量数据类型"文档时,它说具有double子类型的变量可以支持最大值"1.79769313486232E308"(15位)的正值"当包含货币、十进制和双精度值的变量超出各自的范围时,会发生错误。"但是,当我运行以下代码时:
y = 999999999999999999999999999
y = CStr(CDBL(y))
MsgBox y
我没有收到一个错误,相反,我得到一个msgbox,输出如下:"1e+27"(27是y中的位数)。
对此的解释是什么?"y"是如何存储在内存中的?
我在变体文档和CDbl函数文档中都没有找到答案。
谢谢。
在给变量赋值一个数值数量时,vbscript运行时将选择可能的最佳变量类型来匹配该数量。
在你的例子中,字面值对于整型来说太大了,所以它将其分配给double
"子类型"。
将此大小的双精度数转换为字符串将得到一个科学记数法的字符串。
关于你的文件
"1.79769313486232E308"(15位)
有点误导。将其读取为15 有效数字,这是浮点double
精度类型的精度级别。