Какой тип поддерживает большие числа (11 и более знаков до запятой)в Си? Сейчас числа целые (какой для целых),но могут быть и дробные (какой для дробных)? Тип double и real не подходят.Есть ли что-нить типа double precision как в Postgres?
>Какой тип поддерживает большие числа (11 и более знаков до запятой)в Си?
>Сейчас числа целые (какой для целых),но могут быть и дробные (какой
>для дробных)? Тип double и real не подходят.Есть ли что-нить типа
>double precision как в Postgres?И еще функцию (типа atof,atol),переводящую число из 11-13 знаков в этот тип (можно целый).
>Какой тип поддерживает большие числа (11 и более знаков до запятой)в Си?
>Сейчас числа целые (какой для целых),но могут быть и дробные (какой
>для дробных)? Тип double и real не подходят.Есть ли что-нить типа
>double precision как в Postgres?К сожалению, сие зависит от компилятора. Большинство современных компиляторов
кушают тип данных по имени `long long`, который по стандарту должен быть
не менее чем 64-битным. То бишь туда можно засунуть десятичные числа длиной
до 19 знаков любые и даже некоторые длиною 20 знаков.MS для той же цели изобрела тип __int64. Впрочем, я слышал, что последние
версии VC++ кушают уже и long long.Префикс размера для printf и scanf - 'll'. Нечто вроде
printf("%lld", (long long)1);
printf("%llu", (unsigned long long)1);Microsoft и тут отличилась, там форматные строки другие - I64d и I64u, соответственно.
long doubleНасколько я знаю для i386 математический сопроцессор может работать с 10-байтными вещественными числами
10 байт - long double
8 байт - double
4 байта - float