Изменение значения с плавающей запятой при вставке через c# в дБ с помощью servicetack ormlite - PullRequest
0 голосов
/ 22 января 2020

Значение переменной с плавающей точкой при выборе из базы данных 1.67, но если я вставлю то же значение в базу данных с помощью servicestack ormlite, оно превратится в 1.66999995708466.

Между выборами и вставками обработки не происходит. Тип данных является плавающим как в приложении, так и в базе данных.

1 Ответ

2 голосов
/ 22 января 2020

Число с плавающей запятой является неточным типом данных, см. https://floating-point-gui.de (и связанный с ним подробный технический документ ) для объяснения проблемы с типами данных с плавающей запятой, например. NET 's double или float.

Если вам нужна идеальная точность, вы можете использовать. NET' decimal тип данных, который не имеет ошибок округления или если вам нужно только 2 десятичных числа Точность также обычно используется int для захвата центов, например

100 == 100 cents == $1
...