根据IEEE 754-2008 http://en.wikipedia.org/wiki/IEEE_754-2008有
存在三种二进制浮点基本格式(可以使用 32、64 或 128 位进行编码)和两种十进制浮点基本格式(可以使用 64 或 128 位进行编码)。
这张图表就在它的下面。在 C++ 中我相信float
and double
是单精度和双精度(binary32
and binary64
).
Name Common name Base Digits E min E max Digits E max
binary32 Single precision 2 23+1 −126 +127 7.22 38.23
binary64 Double precision 2 52+1 −1022 +1023 15.95 307.95
binary128 Quadruple precision 2 112+1 -16382 +16383 34.02 4931.77
decimal32 10 7 −95 +96 7 96
decimal64 10 16 −383 +384 16 384
decimal128 10 34 −6143 +6144 34 6144
我可以使用什么类/结构decimalX
有什么我可以用的吗binary128
?这些类/结构是标准的还是非标准的?
除了 32 位float
和 64 位double
, 海湾合作委员会提供__float80
, __float128
, _Decimal32
, _Decimal64
, _Decimal128
;对于 ARM 目标,它还提供半精度__fp16
.
Intel CPU 使用旧的标量 x87 FPU 指令(但不使用 SSE 向量指令)在硬件中支持 80 位浮点。我不知道有任何主流 CPU 具有对十进制 FP 类型的硬件支持。
看起来当前的 Microsoft 编译器都提供 64 位double
and long double
,但较旧的给你 80 位long double
.
请参阅此处的文档:
- http://gcc.gnu.org/onlinedocs/gcc/Floating-Types.html http://gcc.gnu.org/onlinedocs/gcc/Floating-Types.html
- http://gcc.gnu.org/onlinedocs/gcc/Half_002dPrecision.html http://gcc.gnu.org/onlinedocs/gcc/Half_002dPrecision.html
- http://gcc.gnu.org/onlinedocs/gcc/Decimal-Float.html http://gcc.gnu.org/onlinedocs/gcc/Decimal-Float.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)