2015-02-22 2 views
0

Мы столкнулись с проблемой, которая представляет собой двойное значение, округленное после использования метода .toString() для отображения в TextBox.Преобразование из двух строк в строку без округления в C#

Что нам нужно что-то вроде этого:

двойное значение: 39621443,8975101998

String Значение: 39621443,8975101998

Но что мы получаем:

двойное значение : 39621443.8975101998

String Значение: +39621443,8975102

Мы Были Googled его и попробовал много methodes, но ни один из тогда не работали

Любая помощь будет высоко оценен

+1

В конце концов оно округляется, в противном случае это число с потенциально бесконечным числом цифр. Вопрос в том, сколько цифр вы хотите? – dotnetom

+0

Фактически количество цифр не предсказуемо, оно варьируется от 1 до 10 или иногда больше цифр –

+2

Пожалуйста, покажите свой код. – OldProgrammer

ответ

2

Если вы хотите точное значение с, что многие десятичные знаки, вы должны использовать тип данных Decimal, который имеет более высокую точность, чем double. Используйте decimal.Parse(str).

1

Как указывает @PetSerAl, два значения (представлены как IEEE 754 double precision floating point number) одинаковы.

39621443.8975101998 => 0x4182E49A1F2E19D4 

39621443.8975102 => 0x4182E49A1F2E19D4 

39621443.89751019980000=> 0x4182E49A1F2E19D4 

BinaryConvert.net.

RoundTrip не поможет вам здесь - это ограничение двойной точности.

Вам понадобится другой тип данных, как предлагает @magnus.

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