Tôi có một sự trở lại log10 hàm giá trị. Trong khi chuyển đổi chúng thành số bình thường, tôi gặp lỗi tràn.
OverflowError: (34, 'Kết quả bằng số nằm ngoài phạm vi')
Tôi đã kiểm tra các giá trị nhật ký và lỗi này xảy ra như thế nào 508.038057662.
Tôi ước tính rằng mặc dù python rất dễ thực thi10**509, nhưng lỗi chắc chắn là do dấu thập phân tràn vào thanh ghi. Vì vậy tôi đã thử sử dụng numpy.float64 như thế này,
result = np.array([ (10**multiplicity(timeseries,om,ph,bins,pos_arr)) cho ph trong np.linspace(0,twopi,num = bins+1)], dtype = np.float64)
Lỗi là như nhau. tôi đã tuyên bố chưa phao64 sai lầm? ?
đây bội số() đang trở lại log10 hàm giá trị. Tôi cần một "danh sách" các giá trị.
Tôi cho rằng mặc dù python dễ dàng thực hiện 10**509, nhưng lỗi này phải do dấu thập phân tràn vào thanh ghi.
Vấn đề không phải ở "tràn dấu thập phân" mà là do kiểu dữ liệu bạn đang sử dụng.
Python có thể vui vẻ tính toán 10**509 như dài
,因为 những cái này có độ chính xác không giới hạn :
>>> gõ(10**509)
Tuy nhiên, kết quả này quá lớn để có thể lưu trữ trong float
中:
>>> phao(10**509)
Traceback (most recent call last):
File "", line 1, in
OverflowError: int dài quá lớn để chuyển đổi thành float
Chúng ta có thể dễ dàng kiểm tra mức tối đafloat
:
>>> nhập hệ thống
>>> sys.float_info.max
1.7976931348623157e+308
Kiểm tracâu hỏi nàyCó vẻ như Numpy phao64
với tiêu chuẩn float
Cùng một phạm vi giá trị, vì vậy việc sử dụng phạm vi đó không giải quyết được vấn đề của bạn.
Thay vào đó, bạn phải sử dụng một trong các mô-đun của bên thứ ba cung cấp các số float chính xác tùy ý, ví dụ: mpmathhoặc phao lớn .
Tôi là một lập trình viên xuất sắc, rất giỏi!