对于负值,单个数据类型的范围为-3.4028235E+38
到-1.401298E-45
。为什么此代码不会导致编译时错误?
'(Option Strict On)
Dim s As Single
s = -5.4028235E+38
答案 0 :(得分:3)
因为它从Double转换为Single,导致Single.NegativeInfinity
。如果您要明确定义这样的数据类型(或使用!
,details here):
s = -5.4028235E+38F
这会导致溢出并且无法编译。
来自MSDN page关于单一数据类型的转换:
Double Narrowing:超出范围的值将转换为Double.NegativeInfinity或Double.PositiveInfinity。
此外,Double值Double.NaN,Double.PositiveInfinity和Double.NegativeInfinity分别转换为Single.NaN,Single.PositiveInfinity和Single.NegativeInfinity。