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 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.