I'm having the strangest behavior with an object generated by numpy.arange:
for i in numpy.arange(xo, xn+h, h): xs.append(float(i)) In this case, xo=1, xn=4, h=0.1.
Now, I expected xs[-1] to be exactly equal to 4.0 == float(4). However, I get the following:
>>> 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 What on earth is happening here?
Placing print type(i) in the for loop prints <type 'numpy.float64'>. Perhaps something going on during the float(i) casting? Using numpy.asscalar doesn't change anything.
Using math.ceil(foo) instead of sympy.ceiling(foo) issues the same thing (that's the part I actually need to work).
float()for casting. Sympy was only used on the last line of the console I/O above. And, as I said, usingmath.ceilinstead ofsympy.ceilingreturns the same.np.arangewith floating point numbers. Rather usenp.linspace.