我找不到任何关于此的信息:
我正在初始化一个变量,当我输入一个科学记数法的数字,如8.45673E11,但它将它转换为标准形式,最后用复合符号845673000000# - 我想知道这是否应该发生?是否有控制此自动转换的设置?复合符号表示什么?
非常感谢!羊毛
这种情况正在发生,因为当您在VBE中键入代码时,您所看到的并不是您所获得的.
当前的代码行只是纯文本:在您按Enter或远离该行之前,它不会被理解为代码.然后,引擎盖下发生了几件事:
因此,当您编写时Foo = 8.45673E11,VBE确定赋值的RHS是双字面值,并编译相应的P-Code指令; 当该指令被翻译回VBA源代码时,它被"重写"为一个显式双字,845673000000#(#后缀是一个类型提示,意思是"那是一个Double")因为P-Code不关心数字的表示(例如科学记数法),只有数字本身; 该类型提示字符混合成的类型是已知的,不需要再重新计算的表达式编译下一次.
当你写作时Foo = 8.45673E11,你仍然会得到Foo = 845673000000#,因为P-Code不关心那个空白.
这也是为什么给定的Public Foo As Double,如果你键入foo = 123你会得到Foo = 123,因为内部符号表中有Foo一个大写F.