22 / 22 / 4
Регистрация: 15.04.2009
Сообщений: 100
|
|||||||||||
1 | |||||||||||
Почему оператор -- не воздействует на long double?12.11.2010, 21:15. Показов 1258. Ответов 10
Метки нет (Все метки)
Есть код:
Расскажите пожалуйста, почему так происходит и как это исправить? P.S.
1
|
12.11.2010, 21:15 | |
Ответы с готовыми решениями:
10
Почему перестает работать программа при замене double на long double? Чем различаются long long и long double? long double и double в MSVC 12 одно и тоже, нужна информация,желательно быстрей Too few parametrs in call to '_fastcall LogN(cont log double, const long double)' |
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||||||
13.11.2010, 01:05 | 2 | |||||
Код
[guest@localhost tests]$ g++ t.cpp -o t [guest@localhost tests]$ ./t 1163878298844645100 1163878298844645099 1163878298844645098 [guest@localhost tests]$
0
|
22 / 22 / 4
Регистрация: 15.04.2009
Сообщений: 100
|
|
13.11.2010, 15:00 [ТС] | 3 |
Посмотрите в приложениях... Как это исправить? Деление/умножение работают, не работают только сложение и вычитание...
0
|
22 / 22 / 4
Регистрация: 15.04.2009
Сообщений: 100
|
|
13.11.2010, 15:17 [ТС] | 5 |
Не подскажите, что можно с этим сделать?
0
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|
13.11.2010, 15:20 | 6 |
а вот пишут, что long double у них отображается в double
надо попробовать mingw, там может быть нормально с этим
1
|
22 / 22 / 4
Регистрация: 15.04.2009
Сообщений: 100
|
|
13.11.2010, 19:54 [ТС] | 7 |
Буду пробовать mingw...
Но самое странное во вложении. Все-таки хотелось бы разобраться в причинах такого странного поведения long double в microsoft visual studio...
0
|
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
|
||||||
13.11.2010, 20:06 | 8 | |||||
В принципе тебе уже все сказали
В VS считает что long double == double Точность у double - 16 десятичных цифр Твое число просто не влазит нормально в double, соответственно прибавление к нему единицы отваливается по точности
Код
> test.exe 1163878298844645400 1163878298844645400 1163878298844645400 А c gcc понятно проблемы нету Даже под Windows у gcc тип long double имеет точность 19 цифр Что впрочем близко к пределу твоего числа Сделай число чуть длинеее - и не поможет long double
1
|
22 / 22 / 4
Регистрация: 15.04.2009
Сообщений: 100
|
|
13.11.2010, 20:16 [ТС] | 9 |
А под BSD у long double такая-же точность?
0
|
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
13.11.2010, 20:27 | 10 |
Какая такая же ?
Компилятор использует CPU У CPU есть 80-битный вещественный тип, который компилятор обзывает long double Соответственно под любой ОС будет так же Microsoft VS (видимо для совместимости со старыми версиями Windows) делает long double == double == 64-битное вещественное Бывает тип 128-битный вещественный - binary128 Но насколько я знаю процы Intel/AMD аппаратно не поддерживают такой тип Если тебе нужная большая точность - смотри в сторону длинной арифметики Там будут хоть 1000-значные числа Считать правда будет медленно
1
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||||||
13.11.2010, 22:29 | 11 | |||||
0
|
13.11.2010, 22:29 | |
13.11.2010, 22:29 | |
Помогаю со студенческими работами здесь
11
Какой спецификатор использовать для корректного вывода типа данных double и long double Вывести long double число без перевода в double Количество знаков после запятой double, Long double Как обойтись без float, double, long double? Double, int , long double Требуется написать функцию long long pow(long long a, unsigned int p), которая возводит число a в степень p Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |