SQL-числа с плавающей запятой — это не то же самое, что C# Doubles. Как мне справиться со значениями Infinity?C#

Место общения программистов C#
Ответить
Anonymous
 SQL-числа с плавающей запятой — это не то же самое, что C# Doubles. Как мне справиться со значениями Infinity?

Сообщение Anonymous »

Очевидно, что не совсем верно, что числа с плавающей запятой в SQL — это то же самое, что и числа Double в C#, поскольку они не могут хранить значения бесконечности.

У меня есть очень простая математическая модель, которая имеет дело с вероятностями и периодами доходности.

Когда

Код: Выделить всё

Double Probability = 0d
,

тогда по определению:

Код: Выделить всё

Double ReturnPeriod = Double.PositiveInfinity
Когда эти свойства сопоставляются с параметрами с плавающей запятой для команды Insert, я получаю сообщение об ошибке на уровне DataService при попытке выполнить процедуру:


Поток протокола удаленного вызова процедур (RPC) входящего потока табличных данных (TDS) неверен. Параметр 134 ("@RETURNPERIOD"): указанное значение не является допустимым экземпляром типа данных float. Проверьте исходные данные на наличие недопустимых значений. Примером недопустимого значения являются данные числового типа, масштаб которых превышает точность.


Как это решить? Я не хочу прибегать к чему-то абсурдному, например, менять схему для хранения строкового представления ReturnPeriods или добавлять дополнительный столбец для каждого отдельного числа с плавающей запятой, чтобы хранить, является ли оно +Inf, -Inf или NaN.

Старые сообщения 2006 года, подобные этому, мне не очень помогают.

Подробнее здесь: https://stackoverflow.com/questions/106 ... ues-of-inf
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»