|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.05.2010, 12:51 | #1 |
Пользователь
Регистрация: 27.10.2009
Сообщений: 11
|
Как вывести long double на экран при использование компилятора Intel w_cproc_p_11.1.065 под Visual Studio
Проблема в следующем:
#include "stdafx.h" #include <iostream> #include <stdio.h> #include "mkl.h" using namespace std; int _tmain(int argc, _TCHAR* argv[]) { long double a = 1.0L; cout.precision(50); cout<<a<<endl; return 0; } Если скомпилировать не меняя параметры компиляции long double тоже что double и все работает. Если запустить компилятор с ключом /Qlong-double, чтобы sizeof(long double) = 16, вылетает на выводе. Что надо подключить из MKL чтобы заработало? |
12.05.2010, 15:07 | #2 |
Форумчанин
Регистрация: 18.02.2010
Сообщений: 164
|
попробуй стандартный потоковый вывод
Код:
|
12.05.2010, 17:23 | #3 |
Пользователь
Регистрация: 27.10.2009
Сообщений: 11
|
Если запустить так:
#include "stdafx.h" #include <iostream> #include <stdio.h> #include "mkl.h" using namespace std; int _tmain(int argc, _TCHAR* argv[]) { long double a = 1.0L; printf("%lg",&a); return 0; } то вместо 1.0 выводиться -9.25596е+061 |
12.05.2010, 19:26 | #4 |
Форумчанин
Регистрация: 18.02.2010
Сообщений: 164
|
printf("%l",a);
|
12.05.2010, 19:57 | #5 |
Пользователь
Регистрация: 27.10.2009
Сообщений: 11
|
выдает предупреждение warning #269: invalid format string conversion
И ничего не выводит на экран... |
12.05.2010, 20:59 | #6 |
ACM!
Форумчанин
Регистрация: 19.06.2009
Сообщений: 382
|
Может я не понял вопрос, но вроде везде для вывода дробного числа (если через printf):
Код:
|
12.05.2010, 22:07 | #7 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
Код:
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
13.05.2010, 08:42 | #8 | ||
Пользователь
Регистрация: 27.10.2009
Сообщений: 11
|
Цитата:
Цитата:
1) Я поставил Visual Studio 2008 и как оказалось типы double и long double одно и тоже. С халтурили в MS . 2) Я скачал 30 дневный пробник от Intel и поставил. Он интегрируется в VS и считает что long double тоже что double, до тех пор пока в строку компиляции не включить ключ /Qlong-double, тогда long double становиться 128 битным числом (а не 64 как double). Таким образом получается квадра-точность. 3) Все математические функции для 128-битного long double есть в библиотеке Intel Math Kernel Labrary, я проверял трассировкой, действительно все берется оттуда, но вывод на экран осуществятся по средством библиотек MS которые считают что lond double 64-битное и либо выкидывают эксепшен (например для cout), либо выводят не правильно как printf. Вопрос что надо подключить из MKL чтобы заработал вывод на экран числа типа long double (128-бит) от Intel? |
||
13.05.2010, 10:49 | #10 |
Пользователь
Регистрация: 27.10.2009
Сообщений: 11
|
здесь только описание double и численные ошибки...
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
E2015 Ambiguity between 'std::log(double)' and 'std::log(long double)' | Namolem | Помощь студентам | 3 | 02.04.2011 20:22 |
VISUAL STUDIO 2008 defaul language - как переключить в VISUAL STUDIO 2008 язык программирования, использ | Эйнж | Общие вопросы C/C++ | 0 | 27.12.2009 20:39 |
MS Visual Studio. ошибка при построении | Backfire | Софт | 0 | 11.10.2009 18:19 |
long double vs. double | VoidMan | Общие вопросы C/C++ | 1 | 21.09.2009 18:45 |