2016-03-31 42 views
0

onlara kesinlik en az 32 bit (sys verir(Sınırsız) Uzun Python Int da Nereye Örtülü Geçiş algılama

Düz tamsayılar (ayrıca aradı tamsayılar) C uzun kullanılarak uygulanmasını Python2 Docs On Numeric Types devlet, .maxint her zaman geçerli platform için maksimum düzlük tamsayı değerine ayarlanır, minimum değer -sys.maxint - 1'dir. Uzun tamsayılar sınırsız hassasiyetli sahip

Ben tamsayılar üzerinde bilimsel olmayan matematik işlemlerini yapar ve ikinci eski tip örtülü dönüşümler hakkında endişe duyuyorum bazı kod:

  1. muhtemelen, ikincisi türleri , ikincisi için bir geçiş muhtemelen (en azından benim kodunda) bazı hata anlamına daha da önemlisi çok daha az verimli eski
  2. daha vardır

O pl mümkündür Her sonra ace kodu ve her matematik işlemi türü için kontrol etmek, ancak bu okunamaz bir kod darmadağın topak haline bile ifadeyi

a * b + 2 * c * d 

yapar.

Bazı numaraların normal int için çok büyük olması durumunda atılması gereken bir istisna ayarlama yolu var mı?

cevap

1

Geçerli olan Python sürümlerinde bir istisna ayarlama yolu yoktur. Python geliştiricileri, zaman içinde int ve long türleri arasındaki farkları gizlemeye çalışmışlardır. Python 3'te, tek tamsayı türü sınırsız hassas tiptir (int olarak adlandırılır).

Python'un çok eski sürümleri (2.2'den önceki; 2001'den önce), long türüne otomatik olarak int türünü tanıtmıyordu. Bunun yerine bir istisna oluşturuldu. Ne yazık ki, bu daha fazla hataya neden oldu. Sınırsız hassas hesaplamaları zorlamak için tamsayı sabitlerini L ile baştan başlatmaya ihtiyacım olduğunu hatırlıyorum. Ayrıntılar için bkz. PEP 237.

+0

Cevabınız için çok teşekkürler. –