内置“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第三方库


热门话题
javajavax。艾尔。PropertyNotFoundException:   java为什么通过TCP发送的文件比它本身包含的文件包含更多的数据?   java为什么字符开关/案例不起作用?   php到java连接器,在哪里可以找到好的连接器   需要帮助Java简单规则形状面积计算器和if语句吗   macos如何从newstyle Oracle Java OSX捆绑包结构启动帮助页?   java既然所有的类都扩展对象,而对象是一个类,那么对象如何扩展对象呢?   java从JavaPairdd<String,Tuple2<Integer,Integer>>转换为JavaPairdd<String,Integer>   java微调器值未从一个活动传递到另一个活动   参数化类型的java数组   java不提供类。getCanonicalName是否存在性能问题?   java输入键JTextField   为什么我不能在java中调用nextLine()方法两次?   JTextPane中的java JProgressBar   java如何获取Crudepository实例?   用于提取几个<div>标记的java正则表达式   java如何使用JUnit Testrunner生成html图像   Go中Java静态属性的等价性