内置“float”上的额外函数类似于“decimal”上的函数。

floatextras的Python项目详细描述


#浮雕 内置float上的额外函数类似于decimal上的函数。

API

>>> from floatextras import *
>>> f = -123.456
>>> as_tuple(f)
    FloatTuple(sign=1, digits=(1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1), exponent=6)
>>> sign, digits, exponent = as_tuple(f)
    >>> from_tuple((0, digits, exponent+1))
    246.912
>>> next_minus(f)
    -123.45600000000002
>>> next_plus(f)
    -123.45599999999999
>>> next_toward(f, 0)
    -123.45599999999999
    >>> float_difference(1, next_minus(next_minus(1)))
    2
    >>> qnan2 = make_nan(2)
    >>> isnan(qnan2)
    True
    >>> isqnan(qnan2)
    True
    >>> issnan(qnan2)
    False
    >>> nan_payload(qnan2)
    2
    >>> isqnan(float('nan'))
    True
    >>> nan_payload(float('nan'))
    0

函数为元组下一个下一个,以及下一个 具有与相应方法相同的效果 [decimal][1]对象,但对于内置的值[float][2] 类型,并且from-tuple等同于decimal构造函数from 一个元组。

[1]: https://docs.python.org/3/library/decimal.html [2]: https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex

函数是一个逆函数,它告诉我们 你需要打多少次电话到g上的next\u plus才能得到f

nan函数是构造和检查nan的实用函数 具有特定有效载荷的值。

大多数函数的可选direct参数可用于强制 要使用[cTypes][3]重新解释的模块 值,而不是使用 [结构][4]模块。在几乎所有的平台上,这将给 同样的结果;在不使用[ieee float][5]的平台上, 或者以不同于主字节顺序的字节顺序存储它们, 相反,这将给出错误的结果(但这可能是有用的 在实验时检查)。

[3]: https://docs.python.org/3/library/ctypes.html [4]: https://docs.python.org/3/library/struct.html [5]: http://en.wikipedia.org/wiki/IEEE_floating_point

与十进制数的差异

固定大小的二进制浮点数当然与 任意大小的十进制浮点数。这意味着元组表示是 明显不同。特别是:

十进制存储为一个整数加上一个指数 无穷大、安静NaN和信号NaN的特殊指数(f, 分别为nn)。

float存储为1到2之间的分数,前导为1 隐式,加上一个指数,带有 无穷大和两个NaN(1024,如果所有数字都是0,则为无穷大, 否则nan,如果第一个数字是1),则安静,另一个数字是0 和非规范值(-1023,它被视为-1022,但没有 分数上的隐式前导1)。

这些差异比实验更容易看出 解释(这部分是这个模块存在的原因)。

动机

python的decimal类型表示ieee 854-1987十进制浮点数,并且 它提供了许多方便的操作来探索 这种代表性,比如[next_plus][6]家族和 [作为元组][6]。有时这些操作比 探索——例如,测试一个算法的结果是否在 预期结果的1ulp。

[6]: https://docs.python.org/3/library/decimal.html#decimal.Decimal.next_plus [7]: https://docs.python.org/3/library/decimal.html#decimal.Decimal.as_tuple

然而,内置的float类型几乎总是表示 一个ieee 754-1985二进制浮点数,对于它,相同的操作是 方便,不包括在内。

当然,可以将浮点和运算符的位 如[ieee floats和python][8]中所述,它们是手动的,而不是 几乎同样方便。

[8]: http://stupidpythonideas.blogspot.com/2015/01/ieee-floats-and-python.html

因此,该模块为float提供类似的功能。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java附加两个数组   java如何在Extjs的不同页面中使用相同的存储   java Jung,大顶点的布局重叠,图形出现在奇怪的位置   java如何在Android中通过画布绘制圆?   java验证库设计模式选择   java研磨机未知标记“timedTests”   java Android领域子类实例方法   java使用resteasy/jaxrs从请求负载接收两种类型的数据   缓冲策略Java缓冲策略有时不能正确绘制   java跟踪棋子   密度无关像素如何在java中锐化图像缩略图?   java如何在MongoDB更新查询中编写(或)更新   java A*寻路游戏系统退出问题   java在安卓中读取xml的最佳方式是什么?   通过反射调用的方法的java抑制警告   安卓 java。语言错误:信号11(SIGSEGV),代码10(?),故障地址006e006f   java lombok 1.18.2使用DexBuilderForDebug抛出TransformClasses   java JOptionPane CD对话框按钮?   java只返回json中的一些值,而不是完整实体对象   java包不存在错误,请稍后重试