gpt4 book ai didi

C中计算 float 的范围

转载 作者:太空宇宙 更新时间:2023-11-03 23:45:10 25 4
gpt4 key购买 nike

标题几乎概括了所有内容。

我知道 float 总共有 32 位,其中 23 位用于尾数,8 位用于指数值,1 位用于签名。

计算“int”的范围非常简单:32bits = 32-1bit signature =31bits ==> 因此范围是 2³¹= 2.14e9

这个公式是有道理的...

现在我环顾了 stackoverflow,但我找到的关于浮点范围计算的所有答案都缺乏实质内容。只是一堆随机出现在响应中的数字,神奇地得出了 3.4e38 的结论。

我正在寻找真正了解该主题的人的答案。有人可以通过使用公式来解释这个范围是如何计算的。

谢谢大家

莫。

最佳答案

C 没有按照 OP 的描述定义 float。 OP建议的那个:binary32 ,最流行的,是众多符合格式之一。

C 定义了什么

5.2.4.2.2 float 类型的特点

s sign (±1)
b base or radix of exponent representation (an integer > 1)
e exponent (an integer between a minimum emin and a maximum emax)
p precision (the number of base-b digits in the significand)
fk nonnegative integers less than b (the significand digits)

x = s*power(b,e)*Σ(k=1, p, f[k]*power(b,-k))

对于binary32,最大值为

x = (+1)*power(2, 128)*(0.1111111111 1111111111 1111 binary)

x = 3.402...e+38

给定 32 位来定义 float 会出现许多其他可能性。示例:float 可以像 binary32 一样存在,但不支持无穷大/非数字。留下另一个可用的指数指数。最大值则为 2*3.402...e+38


binary32 描述了它的有效数字,范围高达 1.11111... 二进制。上面的C特征公式取值范围最大为0.111111...

关于C中计算 float 的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35119686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com