浮点类型

浮点类型说明符分为以下类别:
  • 实际浮点类型
  • 复杂浮点类型

实际浮点类型

通用或二进制浮点类型由以下内容组成:
  • 浮点
  • 双精度值
  • 长双
开始 IBM 扩展 十进制浮点类型包括以下内容:
  • _Decimal32
  • _Decimal64
  • _Decimal128
注: 为了识别 _Decimal32_Decimal64_Decimal128 关键字,必须使用 -qdfp 编译器选项进行编译。 请参阅 -qdfp 以获取详细信息。
结束 IBM 扩展
下表给出了实际浮点类型的量级范围。
表 1. 实际浮点类型的量级范围
类型 范围
浮点 大约 1.2-38 到 3.438
双,长双 大约 2.2-308 到 1.8308
_Decimal32 0.000001-95 到 9.99999996
_Decimal64 0.000000000000001-383 到 9.999999999999999384
_Decimal128 0.000000000000000000000000000000001-6143 到 9.9999999999999999999999999999999996144
如果浮点常量太大或太小,那么结果未由语言定义。

简单浮点声明的声明器是标识。 使用浮点常量或求值为整数或浮点数的变量或表达式初始化简单浮点变量。

IBM 扩展 十进制浮点类型可以与二进制浮点类型支持的任何运算符一起使用。 但是,除非使用显式转换,否则不能在算术表达式中混合十进制浮点类型与通用浮点类型或复杂浮点类型。 隐式转换适用如下:
  • 始终支持十进制浮点类型之间的隐式转换。
  • 始终支持十进制浮点类型与整数类型之间的隐式转换。
  • 有条件地支持十进制浮点类型与通用浮点类型之间的隐式转换。 请参阅 浮点转换 以获取详细信息。
结束 IBM 扩展

复杂浮点类型

C99 标准中引入了复杂浮点类型。 仅限 C + +XL C/C++ 编译器作为 IBM 扩展支持此功能。 仅限 C + +复杂的浮点类型说明符如下:
  • 浮点型复杂
  • 双精度型复杂
  • 长双精度型复杂

复杂类型的表示和对齐要求与包含相应实类型的两个元素的数组类型相同。 实部等于第一元素; 虚部等于第二元素。

平等和不平等性运算符具有与实际类型相同的行为。 任何关系运算符都不能具有复杂类型作为操作数。

IBM 扩展作为 C99 和 C++03 的扩展,复数也可以作为一元运算符 ++ (递增)、 -- (递减)和 ~ (按位取反)的操作数。IBM 扩展