Как корректно преобразовать число типа 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 в строку?
Re: Как корректно преобразовать число типа double в строку?
От:
Аноним
Дата:
31.07.08 09:01
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Мне нужно, чтобы в s было именно "239.9359237546474". Перепробовал уже все варианты... А>Всякое обрезание, округление не катит. Должно быть именно это число, ну если нули после него будут, то это не страшно.
А если там число Пи лежит, то сколько символов должно получиться в результирующей строке?
Re[2]: Как корректно преобразовать число типа double в строк
Здравствуйте, DrWolf, Вы писали:
DW>тип decimal вместо double не устроит?
Нет, не устроит!!! Есть число типа double, менять тип я не собираюсь, знаков в нем немного. В чем проболема? В кривых руках тех, кто писал VS 2005? Прямо такая проблема... число представить как строку. Даже не смешно уже... Весь извелся уже с этой хренью... Все эти ссылки я читал уже!
Re[3]: Как корректно преобразовать число типа double в строк
Здравствуйте, <Аноним>, Вы писали:
А>Нет, не устроит!!! Есть число типа double, менять тип я не собираюсь, знаков в нем немного. В чем проболема? В кривых руках тех, кто писал VS 2005? Прямо такая проблема... число представить как строку. Даже не смешно уже... Весь извелся уже с этой хренью... Все эти ссылки я читал уже!
У тебя проблема с пониманием того, что такое double.
... << RSDN@Home 1.2.0 alpha rev. 786>>
Re: Как корректно преобразовать число типа double в строку?
А>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 в строк
Здравствуйте, Аноним, Вы писали:
А>Нет, не устроит!!! Есть число типа double, менять тип я не собираюсь, знаков в нем немного. В чем проболема? В кривых руках тех, кто писал VS 2005?
Нет.
А>Прямо такая проблема... число представить как строку.
Ну если проблемы никакой нет, почему бы тебе самому не написать код для преобразование double в строку?
Re: Как корректно преобразовать число типа double в строку?