2015-03-26 3 views
0

У меня есть строка, которая поступает из базы данных. Например, это 5.1. Я хочу преобразовать эту строку в double с помощью метода double.tryparse(). Я ожидаю, что результат будет 5.1, но это не так. Результат выглядит как 5.0999999999999996. Что я могу сделать для достижения этого, чтобы оно было 5.1?Double.TryParse показывает неправильный результат

+1

Whis это 'varchar' в базе данных, а не' float'/'decimal'? Или вы используете код типа 'row [" ColumnName "]. ToString()' вместо 'row.Field (" ColumnName ")'? –

+2

Значение 5.1 не может быть представлено точно в типе 'double'. Почему вы используете 'double' вместо' decimal'? – hvd

+0

попробуйте преобразовать как десятичную, точную – cdie

ответ

0

Вместо двойной, сделайте следующее:

decimal.TryParse(s, out myDecimal); 

или

decimal d = Convert.ToDecimal(s); 

Поскольку десятичного с плавающей запятой вместо плавающей двоичную. Вот отличное объяснение: Difference between double and decimal

+2

Любое объяснение, почему его код не удалось, было бы очень приятно узнать для автора. –

+0

Это сделано ... downvoting не было действительно необходимо ... – cdie

+0

Мне очень жаль, я сделал это случайно. Решение работает для меня. Большое спасибо. – user3894737

Смежные вопросы