क्या फ्लोट की तुलना में बेहतर परिशुद्धता के साथ डेटा प्रकार हैं?
क्या फ्लोट की तुलना में बेहतर परिशुद्धता के साथ डेटा प्रकार हैं?
जवाबों:
float
-s हैं डबल परिशुद्धता"
पायथन के अंतर्निहित float
प्रकार में दोहरी सटीकता है (यह double
सीपीयथॉन में एक सी , जाइथन में एक जावा double
है)। यदि आपको अधिक सटीकता की आवश्यकता है, तो NumPy प्राप्त करें और इसका उपयोग करें numpy.float128
।
numpy.float128
अक्सर 64 बिट सिस्टम पर 64 बिट परिशुद्धता होती है। numpy.float128(1) + numpy.float128(2**-64) - numpy.float128(1)
लौटता है 0.0
। देखें stackoverflow.com/a/29821557/420755
Decimal
जब आप अनुमानित संख्या है कि तय कर दी है (लेकिन विन्यास) परिशुद्धता के साथ काम करना चाहते हैं। Fraction
जब आप सटीक अनुपात के साथ काम करना चाहते हैं, तब उपयोग करें और अपनी अनबाउंड स्टोरेज आवश्यकताओं के साथ तैयार करने के लिए तैयार रहें।
हो सकता है कि आपको दशमलव की आवश्यकता हो
>>> from decimal import Decimal
>>> Decimal(2.675)
Decimal('2.67499999999999982236431605997495353221893310546875')
यहाँ मेरा समाधान है। मैं पहले random.uniform के साथ यादृच्छिक संख्या बनाता हूं, उन्हें डबल परिशुद्धता के साथ स्ट्रिंग में स्वरूपित करता हूं और फिर उन्हें वापस फ्लोट में परिवर्तित करता हूं। आप '.2f' को '.3f' आदि में बदलकर सटीकता को समायोजित कर सकते हैं।
import random
from decimal import Decimal
GndSpeedHigh = float(format(Decimal(random.uniform(5, 25)), '.2f'))
GndSpeedLow = float(format(Decimal(random.uniform(2, GndSpeedHigh)), '.2f'))
GndSpeedMean = float(Decimal(format(GndSpeedHigh + GndSpeedLow) / 2, '.2f')))
print(GndSpeedMean)
numpy.floor(100*a)/100
किसी संख्या a
को दो दशमलव स्थानों तक कम करने के लिए उपयोग करना चाहिए ।