क्या फ्लोट की तुलना में बेहतर परिशुद्धता के साथ डेटा प्रकार हैं?
क्या फ्लोट की तुलना में बेहतर परिशुद्धता के साथ डेटा प्रकार हैं?
जवाबों:
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को दो दशमलव स्थानों तक कम करने के लिए उपयोग करना चाहिए ।