我在与由numpy.arange
生成的对象奇怪行为:奇怪行为,当铸造numpy.float64漂浮
for i in numpy.arange(xo, xn+h, h):
xs.append(float(i))
在这种情况下,xo=1
,xn=4
,h=0.1
。
现在,我预计xs[-1]
是完全等于4.0
== float(4)
。但是,我得到以下内容:
>>> foo = xs[-1]
>>> foo == float(4)
False
>>> float(foo) == float(4)
False
>>> foo
4.0
>>> type(foo)
<type 'float'>
>>> int(sympy.ceiling(4.0)), int(sympy.ceiling(foo))
4 5
这里发生了什么?
将print type(i)
放置在for
循环打印<type 'numpy.float64'>
。或许在float(i)
投射期间发生了什么?使用numpy.asscalar
不会改变任何东西。
使用math.ceil(foo)
而不是sympy.ceiling(foo)
发出相同的事情(这是我实际需要工作的部分)。
numpy.float64 VS sympy.float?如果你使用sympy,你可能会遇到这样的问题,我猜? – usethedeathstar
@usethedeathstar我使用内建的'float()'来进行投射。 Sympy仅用于上面控制台I/O的最后一行。而且,正如我所说的,使用'math.ceil'而不是'sympy.ceiling'返回相同的结果。 – Alex
你应该避免使用浮点数的'np.arange'。而是使用'np.linspace'。 – seberg