Làm cách nào để nhập một ký tự vô cực dấu chấm động trong python


76

Làm cách nào để nhập một ký tự vô cực dấu chấm động trong python?

tôi đã nghe nói

 inf = float('inf')

là không di động. Vì vậy, tôi đã có những khuyến nghị sau:

 inf = 1e400

Là một trong hai tiêu chuẩn này, hoặc xách tay? Thực hành tốt nhất là gì?

Câu trả lời:


63

Trong python 2.6, nó có thể di động nếu CPU hỗ trợ nó

Hàm float () bây giờ sẽ biến chuỗi nan thành giá trị IEEE 754 Not A Number, và + inf và -inf thành vô cùng dương hoặc âm. Điều này hoạt động trên bất kỳ nền tảng nào có ngữ nghĩa IEEE 754.


15
@fmark: Chúc bạn may mắn khi tìm được một nền tảng Python chạy nhưng không có ngữ nghĩa IEEE 754. Về lý thuyết, float('inf')nên nâng cao ValueErrortrên các nền tảng này, nhưng theo hiểu biết của tôi thì hành vi này chưa bao giờ được kiểm tra, bởi vì Python (ít nhất là các phiên bản gần đây của Python) vẫn chưa đáp ứng được nền tảng như vậy. Trong thực tế, đừng lo lắng về điều đó.
Mark Dickinson

16

float('inf')là không di động như không di động trở lại Python 2.5 khi đầu ra chuỗi khác nhau giữa các nền tảng. Từ 2.6 trở đi float('inf')được đảm bảo hoạt động trên các nền tảng tuân thủ IEEE-754 (tham khảo: http://www.python.org/dev/peps/pep-0754/ ).

(Và khuyến nghị dường như nằm trong phạm vi 1e30000, không chỉ 1e400.)


11

Có lẽ bạn có thể làm điều gì đó như thế này

try:
    inf = float('inf')
except:  # check for a particular exception here?
    inf = 1e30000

6
+1. float('inf')nói chung là chắc chắn được ưa thích. Thậm chí có khả năng 'inf = 1e30000` có thể bắt đầu tăng lên OverflowErrorthay vì tạo ra vô hạn trong một số phiên bản Python trong tương lai.
Mark Dickinson
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.