带有trvial浮点示例的pyinterval似乎不起作用

时间:2011-07-16 18:47:45

标签: python floating-point floating-accuracy intervals

这里可能有数百个关于浮点舍入误差的问题,解决方案应该是区间运算,它有助于跟踪它们。我想试试这个,我尝试安装pyinterval

不幸的是,它似乎没有起作用。对于浮点误差的这种微不足道的情况,我希望有一个2个数字的间隔,比实际答案高一个,低一个(0.001):

>>> from interval import interval
>>> interval(1.001)-1
interval([0.0009999999999998899])

经过一番搔痒之后,我最好的猜测是在传递给间隔模块之前将数字1.001转换为单个浮点值,所以我尝试使用浮点fpu.up和fpu.down函数来强制转换:

>>> from interval import fpu
>>> fpu.down(lambda : float("1.001")-1)
0.0009999999999998899
>>> fpu.up(lambda : float("1.001")-1)
0.0009999999999998899

知道出了什么问题吗?或者我对这应该如何工作有错误的结论?

我在darwin上使用x86 mac与“Python 2.7.1(r271:86832,2011年1月1日,22:28:41)[GCC 4.2.1(Apple Inc. build 5664)]”

1 个答案:

答案 0 :(得分:0)

看起来字符串到浮点数的转换不符合舍入,但如果我通过输入1.001作为1001/1000手动执行,我会得到我期待的那种东西:

>>> (interval[1001]/1000)-1
interval([0.0009999999999996678, 0.001000000000000112])