为什么单个定义超出范围?

时间:2018-03-07 07:26:27

标签: vb.net

对于负值,单个数据类型的范围为-3.4028235E+38-1.401298E-45。为什么此代码会导致编译时错误?

'(Option Strict On)

Dim s As Single
s = -5.4028235E+38

1 个答案:

答案 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。