python中float到意义_float可以在Python中使用的值范围是多少?

python中float到意义_float可以在Python中使用的值范围是多少?6个答案:答案0:(得分:64)>>>importsys>>>sys.float_infosys.floatinfo(max=1.7976931348623157e+308,max_exp=1024,max_10_exp=308,min=2.2250738585072014e-308,min_exp=-1021,min_10_exp=-307…

python中float到意义_float可以在Python中使用的值范围是多少?

6 个答案:

答案 0 :(得分:64)

>>> import sys

>>> sys.float_info

sys.floatinfo(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308,

min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53,

epsilon=2.2204460492503131e-16, radix=2, rounds=1)

最小的是sys.float_info.min(2.2250738585072014e-308),最大的是sys.float_info.max(1.7976931348623157e + 308)。有关其他属性,请参阅documentation。

sys.float_info.min是标准化的最小值。您通常可以将非规范化的最小值设为sys.float_info.min * sys.float_info.epsilon。请注意,这些数字表示精度不足。正如所料,非正规化min小于标准化min。

答案 1 :(得分:13)

请参阅此post。

帖子的相关部分:

In [2]: import kinds

In [3]: kinds.default_float_kind.M

kinds.default_float_kind.MAX kinds.default_float_kind.MIN

kinds.default_float_kind.MAX_10_EXP kinds.default_float_kind.MIN_10_EXP

kinds.default_float_kind.MAX_EXP kinds.default_float_kind.MIN_EXP

In [3]: kinds.default_float_kind.MIN

Out[3]: 2.2250738585072014e-308

答案 2 :(得分:8)

作为对前面答案的一种理论补充,我想提一下,“魔术”值±308直接来自浮点数的二进制表示。 Double precision floats具有±c * 2 ** q的形式,具有“小”小数值c(~1),并且q是用11个二进制数字写入的整数(其符号包括1位)。 2 **(2 ** 10-1)具有308(十进制)数字的事实解释了极值浮点值中10 **±308的出现。

用Python计算:

>>> print len(repr(2**(2**10-1)).rstrip(‘L’))

308

答案 3 :(得分:4)

Python使用双精度浮点数,它可以容纳从大约10到-308到10到308的值。

从Python提示中尝试此实验:

>>> 1e308

1e+308

>>> 1e309

inf

10到309电源是溢出,但是10到38不是。 QED。

实际上,您可以通过denormals获得小于1e-308的数字,但是这会对性能产生重大影响。我发现Python能够处理1e-324但在1e-325上下溢并返回0.0作为值。

答案 4 :(得分:3)

只是玩耍;这是一个算法方法,可以找到最小和最大正浮点数,希望在任何可以接受float(“+inf”)的python实现中:

def find_float_limits():

“””Return a tuple of min, max positive numbers

representable by the platform’s float”””

# first, make sure a float’s a float

if 1.0/10*10 == 10.0:

raise RuntimeError(“Your platform’s floats aren’t”)

minimum= maximum= 1.0

infinity= float(“+inf”)

# first find minimum

last_minimum= 2*minimum

while last_minimum > minimum > 0:

last_minimum= minimum

minimum*= 0.5

# now find maximum

operands= []

while maximum < infinity:

operands.append(maximum)

try:

maximum*= 2

except OverflowError:

break

last_maximum= maximum= 0

while operands and maximum < infinity:

last_maximum= maximum

maximum+= operands.pop()

return last_minimum, last_maximum

if __name__ == “__main__”:

print (find_float_limits()) # python 2 and 3 friendly

就我而言,

$ python so1835787.py

(4.9406564584124654e-324, 1.7976931348623157e+308)

使用非正规。

答案 5 :(得分:1)

从技术上讲,最小浮点为-inf,最大浮点为inf:

>>> (float(‘-inf’) # negative infinity

< -1.7976931348623157e+308 #* smallest float that is not negative infinity

< -4.9406564584124654e-324 #* biggest negative float that is not zero

< 0 # zero duh

< 4.9406564584124654e-324 #* smallest positive float that is not zero

< 1.7976931348623157e+308 #* biggest float that is not positive infinity

< float(‘inf’)) # positive infinity

True

带有*的

数字与机器有关,与实现有关。

今天的文章python中float到意义_float可以在Python中使用的值范围是多少?分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/28109.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注