Автор
|
Тема: double длиной в 8 байт
|
Yuri_64 |
опубликован 22-11-2001 20:54 MSK
Привет всем! Некая программа пишет в файл массив чисел. Мне надо эти числа читать из него. Одно число занимает 4 байта, и известно, что все числа порядка 10^-44. Увидев, что число занимает 4 байта, я автоматом стал читать его во float, читается все правильно но в 1 случае из 10 прога вылетает с Invalid Float Operation, причина нашлась довольно скоро: у float'a предел 3*10^-38. Очевидно, что для его хранения нужен double, но он ведь занимает 8 байт! Но тогда как мне прочитать эти числа? С уважением, Yuri
|
Flex Ferrum
|
опубликован 22-11-2001 21:28 MSK
Стоп, а как эти числа в файл записываются? Если, как ты сказал, они занимают 4 байта - то тоже как float, а значит, пороблема в другом (т.к. они подчиняются ограничению на 10^-38). Во-первых: на каком этапе возникает ошибка? На этапе чтения или на этапе обработки? Во-вторых, если на этапе обработки, преобразуй их сразу в double. А в третьих - как ты файл открываешь? Как текстовый поток или как двоичный? Учти, что ifstream открывает по умолчанию как текстовый, и, по этому, преобразует '\n' в '\r\n'. У меня в свое время проблема была именно в этом. |