VB.NET Работа с частью уравнения, создающей исключение переполнения
В качестве простого примера следующий код создает исключение переполнения:
Sub Main()
Dim x As Int16 = 2 ^ 10
Dim y As Int16 = 2 ^ 10
Dim z As Int16
z = CType(x * y / y, Int16)
Console.WriteLine(z)
Console.Read()
End Sub
При выполнении арифметики оказывается, что, поскольку уравнение вычисляется постепенно, часть уравнения будет давать результат, больший, чем тип данных, в который будет передаваться результат. Я знаю, что мог бы просто сделать z a большего типа данных, такого как Int32, но есть ли способ сказать, что вычислить выражение как Int32, а затем попытаться преобразовать его в Int16, прежде чем оно будет сохранено в z?
1 ответ
Вы можете преобразовать x и y (Int16) в x2 и y2 (Int32) и вычислить, используя x2 и y2.
Sub Main()
Dim x As Int16 = 2 ^ 10
Dim y As Int16 = 2 ^ 10
Dim z As Int16
Dim x2 As Int32 = x
Dim y2 As Int32 = y
z = CType(x2 * y2 / y2, Int16)
Console.WriteLine(z)
Console.Read()
End Sub