Здравствуйте, Аноним, Вы писали:
А>А>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", а дальше пишешь парсер на сколько мозгов хватит