6.14 Типы десятичных чисел с плавающей точкой ¶
В качестве расширения GNU C поддерживает типы десятичных чисел с плавающей точкой, определённые в черновике ISO/IEC WDTR24732 N1312. Поддержка десятичных типов чисел с плавающей точкой в GCC будет развиваться по мере изменения черновика технического отчета. Способы вызова для любого целевого устройства также могут измениться. Не все целевые устройства поддерживают десятичные типы чисел с плавающей точкой.
Десятичные типы чисел с плавающей точкой — это _Decimal32, _Decimal64, и _Decimal128. Они используют основание десять, в отличие от типов чисел с плавающей точкой float, double, и long double, основание которых не указано стандартом C, но обычно равно двум.
Поддержка десятичных чисел с плавающей точкой включает арифметические операторы сложения, вычитания, умножения, деления; унарные арифметические операторы; реляционные операторы; операторы равенства; и преобразования к целым и другим типам чисел с плавающей точкой. Используйте суффикс «df» или «DF» в литеральной константе типа _Decimal32, «dd» или «DD» для _Decimal64, и «dl» или «DL» для _Decimal128.
Поддержка десятичных чисел с плавающей точкой в GCC, как определено в черновике технического отчета, является неполной:
- Когда значение десятичного типа чисел с плавающей точкой не может быть представлено в целом типе, к которому оно преобразуется, результат является неопределённым, а не значением, указанным в черновике технического отчета.
- GCC не предоставляет функциональность библиотеки C, связанную с math.h, fenv.h, stdio.h, stdlib.h и wchar.h, которые должны быть реализованы в отдельной библиотеке C. Из-за этого компилятор GNU C не определяет макрос
__STDC_DEC_FP__для указания того, что реализация соответствует техническому отчету.
Типы _Decimal32, _Decimal64, и _Decimal128 поддерживаются форматом отладки DWARF.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-11.4.0/gcc/Decimal-Float.html