Преобразование значения текстового поля в одиночное добавляет дополнительную точность в 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