Floating point 可以用浮点表示的最小/最大数字

Floating point 可以用浮点表示的最小/最大数字,floating-point,precision,Floating Point,Precision,如何计算可以用二进制16、32、64 IEEE 754浮点表示的最小/最大十进制数?正常范围为: 16位(半精度):±6.10e-5至±65504.0 32位(单精度):±1.18e−38至±3.4e38 64位(双精度):±2.23e−308至±1.80e308 如果还允许非规范化,则最小值为: 16位:±5.96e-8 32位:±1e-45 64位:±5e-324 始终记住,仅仅因为一个数字在这个范围内并不意味着它可以被精确地表示出来。在任何范围内,由于基数的原因,浮点数都必须跳过值

如何计算可以用二进制16、32、64 IEEE 754浮点表示的最小/最大十进制数?

正常范围为:

  • 16位(半精度):±6.10e-5至±65504.0
  • 32位(单精度):±1.18e−38至±3.4e38
  • 64位(双精度):±2.23e−308至±1.80e308
如果还允许非规范化,则最小值为:

  • 16位:±5.96e-8
  • 32位:±1e-45
  • 64位:±5e-324

始终记住,仅仅因为一个数字在这个范围内并不意味着它可以被精确地表示出来。在任何范围内,由于基数的原因,浮点数都必须跳过值。经典的例子是
1/3
,它没有任何有限精度的精确表示。一般来说,你只能精确地表示那些被称为“二元数”的数字,也就是说,对于某些A和B,形式为A/2^B的数字;如果结果属于动态范围

在特定的编程语言中?或者一般来说?一般来说,我只是在用伪代码编写一个简单的算法,允许用户输入一个固定点数(正数或负数),然后根据输入的数字,确定该数字是否可以用二进制16、32或64浮点数表示。请记住,仅仅因为固定点数在一个范围内,这并不意味着它可以被代表。FP值在任何范围内都“跳过”。@LeventErkok:如果它们在转换过程中允许舍入,则转换为有限值的最大输入数与最大可表示值不同。@EricPostFischil完全正确,舍入模式增加了另一层复杂性。限定:1/3在有限的二进制或十进制格式中没有精确的表示。编写解析器的人可能需要精确的边界,以便他们能够正确地接受或拒绝输入。