gpt4 book ai didi

python - 为什么 math.modf 返回 float ?

转载 作者:太空宇宙 更新时间:2023-11-04 07:41:36 25 4
gpt4 key购买 nike

来自 http://docs.python.org/2/library/math.html :

math.frexp(x)

Return the mantissa and exponent of x as the pair (m, e). m is a float and e is an integer such that x == m * 2**e exactly. If x is zero, returns (0.0, 0), otherwise 0.5 <= abs(m) < 1. This is used to “pick apart” the internal representation of a float in a portable way.

math.modf(x)

Return the fractional and integer parts of x. Both results carry the sign of x and are floats.

this related question ,它指出返回 float 对于 ceil 和 floor 没有真正意义,因此在 Python 3 中,它们被更改为返回整数。 modf 的整数结果也没有作为整数返回有什么原因吗?在 Python 2.7 中:

In [2]: math.floor(5.5)
Out[2]: 5.0

In [3]: math.modf(5.5)
Out[3]: (0.5, 5.0)

In [4]: math.frexp(5.5)
Out[4]: (0.6875, 3)

在 Python 3 中:

In [2]: math.floor(5.5)
Out[2]: 5

In [3]: math.modf(5.5)
Out[3]: (0.5, 5.0)

In [4]: math.frexp(5.5)
Out[4]: (0.6875, 3)

最佳答案

大多数 math 模块函数都是 C 语言标准定义的同名函数的精简包装器。 frexp()modf() 就是其中两个,它们返回的内容与同名 C 函数返回的内容相同。

因此,部分原因在于易于跨语言操作。

但另一部分是实用性:

>>> from math import modf
>>> modf(1e100)
(0.0, 1e+100)

您真的想要将 10000000000000000159028911097599180468360808563945281389781327557747838772170381060813469985856815104 返回为“整数部分”吗?

C 不可能这样做,因为它没有无界整数。 Python 根本不想想要 这样做;-) 请注意,足够大的所有 浮点值都是精确的整数——尽管它们可能需要数百位小数来表示.

关于python - 为什么 math.modf 返回 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19328919/

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