Я подозреваю, что «8» на самом деле является символом бесконечности, но он не отображается должным образом в том, что вы видите. Я только что попробовал этот код:
Dim dbl = Double.PositiveInfinity
Dim table As New DataTable
table.Columns.Add("Number", GetType(Decimal))
table.Rows.Add(dbl)
, и это было сообщение, которое я получил:
System.ArgumentException HResult = 0x80070057 Сообщение = Значение было слишком большим или слишком маленьким для Десятичное число. Не удалось сохранить <∞> в числовом столбце. Ожидаемый тип - Десятичный. Source = System.Data
StackTrace: в System.Data.DataColumn.set_Item (запись Int32, значение объекта) в System.Data.DataTable.NewRecordFromArray (значение Object []) в System.Data.DataRowCollection.Add (Object [ ] значений) в ConsoleApp1.Module1.Main () в C: \ Users \ johnm \ AppData \ Local \ Временные проекты \ ConsoleApp1 \ Module1.vb: строка 12
Внутреннее исключение 1: OverflowException: значение было либо слишком большое, либо слишком маленькое для десятичного числа.
Не идеально, если вы работаете со значениями Double
и затем сохраняете результаты в виде значений Decimal
. Это может быть неизбежно, но, если это так, вам нужно сделать немного лучше при проверке. Вы, вероятно, делите на ноль, что допустимо для Double
значений и дает либо Double.PositiveInfinity
, либо Double.NegativeInfinity
.