Как корректно преобразовать число типа double в строку?
От: Аноним  
Дата: 31.07.08 08:48
Оценка:
double a = 239.9359237546474;
string s = string.Format("{0:R15}", a);


Мне нужно, чтобы в s было именно "239.9359237546474". Перепробовал уже все варианты...
Всякое обрезание, округление не катит. Должно быть именно это число, ну если нули после него будут, то это не страшно.

Вот, что меня взбесило, так это то, что:

double a = 239.9359237546474;
string s = string.Format("{0}", a); // a получается равным 239.935923754647


Ну с какого хрена?
Re: Как корректно преобразовать число типа double в строку?
От: nikov США http://www.linkedin.com/in/nikov
Дата: 31.07.08 08:59
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Ну с какого хрена?


Используйте decimal.

Числа с плавающей запятой и их особенности
Плавающая запятая
Автор(ы): Сергей Холодилов
Дата: 15.03.2008
Если яблоко поровну разделить на троих, каждому достанется треть. Так в нашу жизнь входят дроби, примерно с теми же целями входят они и в программирование.. Но реализация дробей в виде типов данных float/double ведёт себя не совсем "математично". В чём причина отличий, как минимизировать их влияние на результат вычислений, как же всё это всё-таки реализовано и почему запятая плавает — читайте в статье.

Почему 0.05 * 0.006 = 0.00030000000000000003?
Автор:
Дата: 22.07.08

Округление? Почему так?
Автор: zbanned
Дата: 03.07.08

double (неправльно щитает)
Автор: ywlepak
Дата: 05.02.07

Проблема преобразования типов
Автор: Tezcatlipoca
Дата: 23.09.04
Re: Как корректно преобразовать число типа double в строку?
От: DrWolf  
Дата: 31.07.08 08:59
Оценка:
тип decimal вместо double не устроит?
Re: Как корректно преобразовать число типа double в строку?
От: Аноним  
Дата: 31.07.08 09:01
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Мне нужно, чтобы в s было именно "239.9359237546474". Перепробовал уже все варианты...

А>Всякое обрезание, округление не катит. Должно быть именно это число, ну если нули после него будут, то это не страшно.

А если там число Пи лежит, то сколько символов должно получиться в результирующей строке?
Re[2]: Как корректно преобразовать число типа double в строк
От: Аноним  
Дата: 31.07.08 11:03
Оценка: -1 :))) :))
Здравствуйте, DrWolf, Вы писали:

DW>тип decimal вместо double не устроит?


Нет, не устроит!!! Есть число типа double, менять тип я не собираюсь, знаков в нем немного. В чем проболема? В кривых руках тех, кто писал VS 2005? Прямо такая проблема... число представить как строку. Даже не смешно уже... Весь извелся уже с этой хренью... Все эти ссылки я читал уже!
Re[3]: Как корректно преобразовать число типа double в строк
От: Lloyd Россия  
Дата: 31.07.08 11:13
Оценка: 1 (1) +5
Здравствуйте, <Аноним>, Вы писали:

А>Нет, не устроит!!! Есть число типа double, менять тип я не собираюсь, знаков в нем немного. В чем проболема? В кривых руках тех, кто писал VS 2005? Прямо такая проблема... число представить как строку. Даже не смешно уже... Весь извелся уже с этой хренью... Все эти ссылки я читал уже!


У тебя проблема с пониманием того, что такое double.
... << RSDN@Home 1.2.0 alpha rev. 786>>
Re: Как корректно преобразовать число типа double в строку?
От: evilWizard Украина  
Дата: 31.07.08 11:39
Оценка:
Здравствуйте, Аноним, Вы писали:


А>
А>double a = 239.9359237546474;
А>string s = string.Format("{0:R15}", a);
А>


А>Мне нужно, чтобы в s было именно "239.9359237546474". Перепробовал уже все варианты...

А>Всякое обрезание, округление не катит. Должно быть именно это число, ну если нули после него будут, то это не страшно.

А>Вот, что меня взбесило, так это то, что:


А>
А>double a = 239.9359237546474;
А>string s = string.Format("{0}", a); // a получается равным 239.935923754647
А>


А>Ну с какого хрена?


В вещественном формате нет возможности представить число точно как ты этого хочешь, потому что оно представлено в виде ряда дробей, например число 0.5 проц понимает как 1/32 + 1/64 + 1/512 + 1/1024 + 1/8192 + 1/16384 + ... и так до тех пор пока не закончатся разряды мантисы...
Поэтому и сравнивать на эквивалентность вычисляемые вещ.числа нельзя

Используй округление до нужной точности. Или могу предложить вариант: загоняешь число в строку через "G20", а дальше пишешь парсер на сколько мозгов хватит
All roads lead to Babilon!
Re[3]: Как корректно преобразовать число типа double в строк
От: nikov США http://www.linkedin.com/in/nikov
Дата: 31.07.08 12:57
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Нет, не устроит!!! Есть число типа double, менять тип я не собираюсь, знаков в нем немного. В чем проболема? В кривых руках тех, кто писал VS 2005?

Нет.

А>Прямо такая проблема... число представить как строку.

Ну если проблемы никакой нет, почему бы тебе самому не написать код для преобразование double в строку?
Re: Как корректно преобразовать число типа double в строку?
От: Niemand Австралия  
Дата: 31.07.08 15:53
Оценка: :))) :))
Здравствуйте, Аноним, Вы писали:

А>Мне нужно, чтобы в s было именно "239.9359237546474". Перепробовал уже все варианты...


а так?

string  s = "239.9359237546474";
If the message above is in English — means I'm wasting my work time and work computer to post here. No hard feelings
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.