barja Опубликовано 12 октября, 2016 Жалоба Поделиться Опубликовано 12 октября, 2016 ос win10х64 компилятор dev c++ (5.11) #include <stdio.h> int main(void) { float a = 32000.0; double b = 2.14e9; long double c = 5.32e-05; printf("%f - %e\n", a, a); printf("%f - %e\n", b, b); printf("%Lf - %Le\n", c, c); getchar(); return 0; } вывод: Цитата 32000.000000 - 3.200000e+004 2140000000.000000 - 2.140000e+0090.000000 - 5.180409e-317 в чем может быть проблема? Ссылка на комментарий Поделиться на другие сайты Поделиться
Teddy_Bear Опубликовано 12 октября, 2016 Жалоба Поделиться Опубликовано 12 октября, 2016 (изменено) Это спасибо дяде Билли. В Винде лонг дабл и дабл совпадают! https://msdn.microsoft.com/ru-ru/library/s3f49ktz.aspx Происходит неявное преобразование типов. Причем с ошибкой. Баг это. Медицина бессильна. Приведите лонг дабл к дабл и пользуйтесь ей спокойно. Если совсем невмоготу, то велкам к пингвинам. Изменено 12 октября, 2016 пользователем Teddy_Bear Ссылка на комментарий Поделиться на другие сайты Поделиться
barja Опубликовано 14 октября, 2016 Автор Жалоба Поделиться Опубликовано 14 октября, 2016 В 12.10.2016 в 21:41, Teddy_Bear сказал: Это спасибо дяде Билли. В Винде лонг дабл и дабл совпадают! https://msdn.microsoft.com/ru-ru/library/s3f49ktz.aspx Происходит неявное преобразование типов. Причем с ошибкой. Баг это. Медицина бессильна. Приведите лонг дабл к дабл и пользуйтесь ей спокойно. Если совсем невмоготу, то велкам к пингвинам. нашел решение. Цитата Сообщение от odip Изучение проблемы показало что Windows считает что double == long double В то время как mingw gcc считает что sizeof(long double) == 10. Тем не менее обойти удалось В mingw gcc есть собственная реализация printf(). Нужно указать что нужно использовать свой printf(). Для этого нужно прописать #define __USE_MINGW_ANSI_STDIO 1 после чего вывод такой Цитата 32000.000000 - 3.200000e+004 2140000000.000000 - 2.140000e+009 0.000053 - 5.320000e-005 Ссылка на комментарий Поделиться на другие сайты Поделиться
Teddy_Bear Опубликовано 14 октября, 2016 Жалоба Поделиться Опубликовано 14 октября, 2016 (изменено) Всё правильно. Только пингвины любили дядю Билли. Своим программистам за мегабабло от M$ справиться не удалось. MinGW (Minimalist GNU for Windows), программный порт GNU Compiler Collection (GCC) под Windows. GCC используется как стандартный компилятор для свободных UNIX-подобных операционных систем. Только вот беда. Используя не родную для Сишарпа библиотеку MinGW можете напороться на неожиданное переопределение функций. Как говорил Чак Йегер: Watch you six! Изменено 14 октября, 2016 пользователем Teddy_Bear Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти