Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2010, 12:51   #1
FPU128bit
Пользователь
 
Регистрация: 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 чтобы заработало?
FPU128bit вне форума Ответить с цитированием
Старый 12.05.2010, 15:07   #2
Alex_sim
Форумчанин
 
Аватар для Alex_sim
 
Регистрация: 18.02.2010
Сообщений: 164
По умолчанию

попробуй стандартный потоковый вывод
Код:
printf("%lg",&a);
Alex_sim вне форума Ответить с цитированием
Старый 12.05.2010, 17:23   #3
FPU128bit
Пользователь
 
Регистрация: 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
FPU128bit вне форума Ответить с цитированием
Старый 12.05.2010, 19:26   #4
Alex_sim
Форумчанин
 
Аватар для Alex_sim
 
Регистрация: 18.02.2010
Сообщений: 164
По умолчанию

printf("%l",a);
Alex_sim вне форума Ответить с цитированием
Старый 12.05.2010, 19:57   #5
FPU128bit
Пользователь
 
Регистрация: 27.10.2009
Сообщений: 11
По умолчанию

выдает предупреждение warning #269: invalid format string conversion
И ничего не выводит на экран...
FPU128bit вне форума Ответить с цитированием
Старый 12.05.2010, 20:59   #6
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Сообщений: 382
По умолчанию

Может я не понял вопрос, но вроде везде для вывода дробного числа (если через printf):
Код:
printf("%.10ld", a); /* 10 - точность после запятой */
k1r1ch вне форума Ответить с цитированием
Старый 12.05.2010, 22:07   #7
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Код:
printf("%Lg", a);
Точность указывать необязательно, L должна быть большая, вместо &a (адрес переменной a) должно быть a - это вам не scanf.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 13.05.2010, 08:42   #8
FPU128bit
Пользователь
 
Регистрация: 27.10.2009
Сообщений: 11
По умолчанию

Цитата:
printf("%Lg", a);
выдает 9.35221у-231 и все...

Цитата:
Может я не понял вопрос
Ситуация состоит в следующем:
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?
FPU128bit вне форума Ответить с цитированием
Старый 13.05.2010, 08:59   #9
mrChester
Я
Форумчанин
 
Аватар для mrChester
 
Регистрация: 24.04.2010
Сообщений: 693
По умолчанию

Посмотри здесь, если правильно тебя понял, то это то, что тебе нужно
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©.
mrChester вне форума Ответить с цитированием
Старый 13.05.2010, 10:49   #10
FPU128bit
Пользователь
 
Регистрация: 27.10.2009
Сообщений: 11
По умолчанию

здесь только описание double и численные ошибки...
FPU128bit вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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