2014-04-09 14 views

cevap

70

Ah, bundan çok "kötü" olduğunu 10 bir tam sayıdır ve numpy.power yüzen numaraları zorlamak değildir. Ama bu işleri: Güç operatörü, **, dönüştürme yüzer olmadığını ancak

In [3]: numpy.power(10.,-1) 
Out[3]: 0.10000000000000001 

In [4]: numpy.power(10.,-100) 
Out[4]: 1e-100 

Not: (. Bu sayfadaki diğer iki cevaplara Sadece bir dipnot)

In [5]: 10**-1 
Out[5]: 0.1 
+0

Bu, numpy modülü ile kesinlikle bir otomatik uyarı gelmesi gereken bir şeydir – mjp

35

Nümerik yöntem, tamsayı sağladığınızdan tamsayı döndürmek istediğinizi varsayar. Beklediğiniz gibi çalışır.

In [2]: numpy.power(10,-1) 
Out[2]: 0 

Ama bu ne olup bittiğini bir ipucu:

2

Verilen giriş iki giriş değerleri sen np.powertypes niteliğini inceleyerek dönecek nesnenin veri türü kontrol edebilirsiniz:

>>> np.power.types 
['bb->b', 'BB->B', 'hh->h', 'HH->H', 'ii->i', 'II->I', 'll->l', 'LL->L', 'qq->q', 
'QQ->Q', 'ee->e', 'ff->f', 'dd->d', 'gg->g', 'FF->F', 'DD->D', 'GG->G', 'OO->O'] 

Python uyumlu tamsayı türleri l ile gösterilmektedir, uyumlu-uyumlu Python d (documents) yüzer. Bu listeden ilk eşleşen imzayı kullanan ve kullanılan argüman türlerini kontrol ederek ne döneceğine etkili bir şekilde karar verir.

10 ve -100, np.power verilen integer integer -> integer imzası ile eşleşir ve 0 tamsayı değerini döndürür.

Diğer taraftan, argümanlardan biri bir float ise the integer argument will also be cast to a float ve float float -> float imzası kullanılır (ve doğru float değeri döndürülür).

İlgili konular