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!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.