मैं एक Django अनुप्रयोग में दशमलव वस्तुओं का उपयोग कर रहा है, और पाया यह अजीब त्रुटि:decimal.Decimal (एन)% 1 रिटर्न InvalidOperation, DivisionImpossible सभी n के लिए> = 100
ipdb> decimal.Decimal(10) % 1
Decimal('0')
ipdb> decimal.Decimal(100) % 1
*** decimal.InvalidOperation: [<class 'decimal.DivisionImpossible'>]
ipdb> decimal.Decimal(150) % 1
*** decimal.InvalidOperation: [<class 'decimal.DivisionImpossible'>]
ipdb> decimal.Decimal(79) % 1
Decimal('0')
ipdb> decimal.Decimal(100.1) % 2
Decimal('0.10')
ipdb> decimal.Decimal(1000) % 2
*** decimal.InvalidOperation: [<class 'decimal.DivisionImpossible'>]
इससे भी अधिक रहस्यमय तरीके से, यह नहीं करता है 'टी IPython में होती हैं जब तक संख्या बहुत बड़ी मिलती है:
In [23]: decimal.Decimal(10**27) % 1
Out[23]: Decimal('0')
In [24]: decimal.Decimal(10**28) % 1
---------------------------------------------------------------------------
InvalidOperation Traceback (most recent call last)
<ipython-input-24-6ceaef82d283> in <module>()
----> 1 decimal.Decimal(10**28) % 1
InvalidOperation: [<class 'decimal.DivisionImpossible'>]
ध्यान दें कि त्रुटि ipdb तक ही सीमित नहीं है: मैं इस खोज की है क्योंकि दशमलव (380) 1% से मेरी Django एप्लिकेशन को तोड़ने गया था।
documentation का वर्णन इस त्रुटि का कहना है:
Division impossible
This occurs and signals invalid-operation if the integer result of a divide-integer or remainder operation had too many digits (would be longer than precision). The result is [0,qNaN].
कोई भी विचार?
मैं अजगर 3 के साथ अपने त्रुटि पुन: पेश करने में असमर्थ हूँ, मुद्दा – Anonymous
बिना काम करता है मैं अजगर 2 – dawg
में पुन: पेश करने मैं Python3.5 में अपने अंतिम त्रुटि repro सकते में असमर्थ हूँ। 'दशमलव (10 ** 28)% 1' एक दशमलव को फेंक देता है। अविश्वसनीय ऑपरेशन: [<वर्ग 'दशमलव .डिजन असंभव'>]' –