2015-12-14 42 views
11

Burada merak etmek, bir değişkene sahip olmanın amacı bir programda sonsuz bir değeri saklamaktır? Herhangi bir gerçek kullanım var mı ve foo = float('Inf')'u kullanmak için tercih edilebilecek herhangi bir durum var mı, yoksa içeri sokmak için sıkışmış oldukları küçük bir parça mı?Python'da kayan nokta ('Inf') noktası nedir?

cevap

21

Karşılaştırma için sınırsız bir üst değer olarak işlev görür. Bu, bir şey için en düşük değerleri bulmak için kullanışlıdır. Örneğin, ağaçları çaprazlarken yol güzergahı maliyetlerini hesaplamak.

örn. seçenekler listesinde "en ucuz" yolunu bulma: Eğer sizin için kullanılabilir float('Inf') olmasaydı

>>> lowest_path_cost = float('inf') 
>>> # pretend that these were calculated using some worthwhile algorithm 
>>> path_costs = [1, 100, 2000000000000, 50] 
>>> for path in path_costs: 
... if path < lowest_path_cost: 
...  lowest_path_cost = path 
... 
>>> lowest_path_cost 
1 

, sen the initial lowest_path_cost için hangi değer kullanırsınız? 9999999 yeterli olur - float('Inf') bu tahminde kaldırır. documentation itibaren

5

:

Birçok kayan nokta özellikleri eklendi. Float() işlevi şimdi dizgesini naneli IEEE 754 Not A Number değerine ve + inf ve -inf pozitif veya negatif sonsuzluğa dönüştürecektir. Bu, IEEE 754 semantiği olan herhangi bir platformda çalışır. (Christian Heimes katkılarıyla; sorunu 1635.)

Ayrıca, bu başvurun: Working with Infinity and NaNs