Преобразование значения текстового поля в одиночное добавляет дополнительную точность в C#

При преобразовании значения текстового поля в Convert.ToSingle() добавляет дополнительную точность для значений, таких как 2,7 до 2,7999999523162842. Я не хочу никакого округления этого значения, потому что я должен сохранить точное значение, введенное пользователем в БД. Так что, если у кого-то есть эта проблема, прежде чем публиковать решение, любая помощь будет оценена.

1 ответ

Это потому что float является двоичной дробью, которая не может точно представлять число 2.7 - когда вы пытаетесь присвоить число, которое не является двоичной дробью float или double, вы неизбежно получите неточное представление.

Вам нужно использовать decimal если вы не хотите точно представлять десятичные числа, такие как 2.7.

var myDecimal = Convert.ToDecimal(input);

В то же время, для сохранения этого значения в базе данных сервера SQL необходимо использовать тип данных SQL, способный хранить точные десятичные числа. Удобно, этот тип данных называется decimal и в SQL

Другие вопросы по тегам