我找不到有关此的任何信息:
我正在初始化一个变量,当我用科学记数法输入数字时,例如8.45673E11,但是它将其转换为带有结尾的复合符号的标准格式845673000000#-我想知道这是否应该发生?是否有控制此自动转换的设置?复合符号表示什么?
非常感谢! 拉娜
答案 0 :(得分:5)
之所以发生这种情况,是因为当您在VBE中键入代码时,所看到的不是所得到的。
当前代码行仅是纯文本:在您按Enter或离开该行之前,它不会被理解为 code 。然后,在后台发生了几件事:
因此,当您编写Foo = 8.45673E11
时,VBE会确定分配的RHS是双字面量,并编译相应的P代码指令;当该指令翻译回VBA源代码时,将其“重写”为显式的双字面量,845673000000#
(#
后缀是类型提示< / em>的意思是“那是Double
”),因为P-Code并不关心数字(例如科学计数法)的表示,只关心数字本身;添加 type提示字符,以便该类型是已知的,并且下次编译表达式时无需再次重新评估。
当您编写Foo = 8.45673E11
时,您仍然会得到Foo = 845673000000#
,因为P代码并不关心那个空格。
这也是为什么给定Public Foo As Double
并输入foo = 123
会得到Foo = 123
的原因,因为内部符号表具有Foo
并带有大写F
。