Tôi rơi vào một trường hợp kỳ lạ. Tôi đã thử một trong ba giải pháp được đăng ở đây từ Pyson: Increment a python floating point value by the smallest possible amount. Tất cả ba giải pháp hiển thị một hành vi lạ khi tôi hạ cánh trên điểm nổi này: 1.15898324042702949299155079643242061138153076171875.numpy.nextafter decrementing thay vì tăng
Hãy nói tôi có đoạn mã sau:
import numpy as np
from __future__ import division
a = 1.15898324042702949299155079643242061138153076171875
b = 0
b = np.nextafter(a,1)
print a, b
Đối với một số lý do, thay vì incrementing b
bởi số lượng nhỏ nhất có thể, nó được giảm đi. Tại sao vậy?
Dưới đây là một số kết quả nhanh chóng mà tôi nhận được từ chơi xung quanh:
In [12]: a = 1.15898324042702949299155079643242061138153076171875
In [13]: a
Out[13]: 1.1589832404270295
In [14]: numpy.nextafter(a,1)
Out[14]: 1.1589832404270293
In [15]: numpy.nextafter(a,-1)
Out[15]: 1.1589832404270293