本节介绍了 IEEE 754-1985 规范。IEEE 标准在 2008 年进行了大幅度修改。
IEEE 754 规定:
两种基本的浮点格式:单精度和双精度。
IEEE 单精度格式具有 24 位有效数字精度,并总共占用 32 位。 IEEE 双精度格式具有 53 位有效数字精度,并总共占用 64 位。
两种扩展浮点格式:单精度扩展和双精度扩展。
此标准并未规定这些格式的精确精度和大小,但它指定了最小精度和大小。例如,IEEE 双精度扩展格式必须至少具有 64 位有效数字精度,并至少总共占用 79 位。
浮点运算的精确度要求:加、减、乘、除、平方根、余数、将浮点格式的数舍入为整数值、在不同浮点格式之间转换、在浮点和整数格式之间转换以及比较。
求余和比较运算必须精确无误。其他的每种运算必须向其目标提供精确的结果,除非没有此类结果,或者该结果不满足目标格式。对于后一种情况,运算必须按照下面介绍的规定舍入模式的规则对精确结果进行最低限度的修改,并将经过此类修改的结果提供给运算的目标。
在十进制字符串和两种基本浮点格式之一的二进制浮点数之间进行转换的准确性、单一性和一致性要求。
对于在指定范围内的操作数,这些转换必须生成精确的结果(如果可能的话),或者按照规定舍入模式的规则,对此类精确结果进行最低限度的修改。对于不在指定范围内的操作数,这些转换生成的结果与精确结果之间的差值不得超过取决于舍入模式的指定误差。
五种类型的 IEEE 浮点异常,以及用于向用户指示发生这些类型的异常的条件。
五种类型的浮点异常是:无效运算、除以零、溢出、下溢和不精确。
四种舍入方向:向最接近的可表示的值,当有两个最接近的可表示的值时首选“偶数”值;向负无穷大舍入(向下);向正无穷大舍入(向上)以及向 0 舍入(截断)。
IEEE 标准还建议在用户进行异常处理时提供支持。
IEEE 标准所需的特性可以支持区间算法、异常的回顾诊断、有效地实现标准基本函数(如 exp 和 cos)、多精度算法以及用于数值计算的很多其他工具。
与任何其他种类的浮点算法相比,IEEE 754 浮点算法为用户提供了更好的计算控制。IEEE 标准不仅严格要求遵循实现标准,而且还使得此类实现改进和完善了标准本身,从而简化了编写复杂的可移植数值程序的任务。