3 回答
TA貢獻1795條經驗 獲得超7個贊
也許這與浮點數的限制有關。由于機器的精度,不可能將所有可能的值完美地存儲為浮點數。例如:
>>> 8.4
8.4000000000000004
>>> 8.35
8.3499999999999996
因此,作為浮點數的8.4略大于8.4的實際值,而作為浮點數的8.35則稍小一點。
TA貢獻1869條經驗 獲得超4個贊
我猜想您正在看到浮點取整的效果。
numpy.arange與python的功能相同range:它不包含“端點”。(例如range(0, 4, 2)將[0,2]代替[0,2,4])
但是,對于浮點步長,舍入誤差會累積,有時最后一個值實際上會包括端點。
如文檔中所述arange:
當使用非整數步驟(例如0.1)時,結果通常將不一致。最好在linspace這些情況下使用。
numpy.linspace在起點和終點之間生成指定數量的點。順便說一句,默認情況下確實包含端點。
TA貢獻1943條經驗 獲得超7個贊
范圍函數的幫助說
For floating point arguments, the length of the result is
``ceil((stop - start)/step)``. Because of floating point overflow,
this rule may result in the last element of `out` being greater
than `stop`.
對于python 2.7,現在在大多數平臺上都可以正確舍入浮點數和字符串之間的轉換。
在2.7中
>>> float(repr(2.3))
2.3
在2.6中
>>> float(repr(2.3))
2.2999999999999998
添加回答
舉報
