6 / 8 / 8
Регистрация: 06.10.2017
Сообщений: 269
|
|
1 | |
Чем различаются long long и long double?15.05.2018, 12:32. Показов 7772. Ответов 7
Метки нет Все метки)
(
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
15.05.2018, 12:32 | |
Ответы с готовыми решениями:
7
Требуется написать функцию long long pow(long long a, unsigned int p), которая возводит число a в степень p Не понятный undefined reference to `unsigned long long f<unsigned long long, void> Возведение в степень по модулю для чисел близких к max long long Нюансы синтаксиса: что означает запись typedef long long i64 ? |
610 / 375 / 134
Регистрация: 06.03.2017
Сообщений: 1,377
|
|
15.05.2018, 12:33 | 2 |
unsigned long long - беззнаковый тип.
long long - если нужны целые числа со знаком. double - для чисел с плавающей точкой ( не целые числа )
0
|
91 / 80 / 40
Регистрация: 26.07.2015
Сообщений: 177
|
|||||||||||
15.05.2018, 12:39 | 3 | ||||||||||
Занимаемое место в памяти зависит от компилятора. Можешь проверить так
0
|
6 / 8 / 8
Регистрация: 06.10.2017
Сообщений: 269
|
|
15.05.2018, 12:59 [ТС] | 4 |
что будет если хранить в long double большое целое число?
0
|
Модератор
![]() 12636 / 10131 / 6101
Регистрация: 18.12.2011
Сообщений: 27,165
|
||||||
15.05.2018, 13:10 | 5 | |||||
![]() Решение
Числа с плавающей точкой преобразуются в десятичные (и наоборот) лишь с некоторой точностью.
Поэтому не удивляйтесь если выполняя
1
|
91 / 80 / 40
Регистрация: 26.07.2015
Сообщений: 177
|
||||||||||||||||
15.05.2018, 13:49 | 6 | |||||||||||||||
![]() Решение
И чем больше числа будут использоваться, тем больше будет погрешность. Вот пример для float32.
Если попробовать сохранить число
1
|
![]() ![]() |
|
15.05.2018, 23:22 | 8 |
Конкретно у long double мантисса 64-битная. Т.е. 64-битный unsigned long long влезет в long double без потери точности
C #include <stdio.h> long double ld; unsigned long long ull = 0xFFFFFFFFFFFFFFFFull; int main (void) { printf ("%llu\n", ull); ld = ull; printf ("%Lf\n", ld); } Код
18446744073709551615 18446744073709551615.000000 Но на древних системах long double может быть эквивалентным double'у, у которого мантисса 53-битная, а потому у 64-битного целого могут быть потери до 11 бит (т.е. для больших чисел потеря точности будет до +-1024) C #include <stdio.h> double d; unsigned long long ull1 = 0xFFFFFFFFFFFFFFFFull; unsigned long long ull2 = 0xFFFFFFFFFFFFFFFFull - 1024; int main (void) { printf ("%llu\n", ull1); d = ull1; printf ("%f\n", d); printf ("%llu\n", ull2); d = ull2; printf ("%f\n", d); } Код
18446744073709551615 18446744073709551616.000000 18446744073709550591 18446744073709549568.000000
2
|
15.05.2018, 23:22 | |
Помогаю со студенческими работами здесь
8
Как char[] перевести в битовую маску long long(64 бита) и наоборот?
Вызвано исключение при инициализации массива long long int Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |