मुझे एक MySQL डेटाबेस के शीर्ष पर PHP में लिखित विरासत कोड का एक बड़ा ढेर विरासत में मिला है। मैंने देखा कि बात यह है कि आवेदन doubles
डेटा के भंडारण और हेरफेर के लिए उपयोग करता है ।
अब मैंने कई पोस्टों में उल्लेख किया है कि कैसे double
गोल त्रुटियों के कारण मौद्रिक संचालन के लिए अनुकूल नहीं हैं। हालाँकि, मुझे अभी तक एक संपूर्ण समाधान नहीं मिला है कि मौद्रिक मूल्यों को PHP कोड में कैसे संभाला जाए और एक MySQL डेटाबेस में संग्रहीत किया जाए।
जब PHP में विशेष रूप से पैसे को संभालने की बात आती है तो क्या सबसे अच्छा अभ्यास होता है?
जिन चीजों की मुझे तलाश है वे हैं:
- डेटाबेस में डेटा कैसे संग्रहीत किया जाना चाहिए? स्तंभ प्रकार? आकार?
- डेटा को सामान्य जोड़, घटाव में कैसे नियंत्रित किया जाना चाहिए। गुणा या भाग?
- मुझे मूल्यों को गोल कब करना चाहिए? यदि कोई हो तो कितनी गोलाई स्वीकार्य है?
- क्या बड़े मौद्रिक मूल्यों और कम लोगों को संभालने के बीच अंतर है?
नोट: मैं रोजमर्रा की जिंदगी में पैसे के मूल्यों का सामना कैसे कर सकता हूं, इसका एक बहुत ही सरल नमूना कोड (सरलीकरण के लिए विभिन्न सुरक्षा चिंताओं को नजरअंदाज कर दिया गया था। निश्चित रूप से वास्तविक जीवन में मैं इस तरह से अपने कोड का उपयोग कभी नहीं करूंगा):
$a= $_POST['price_in_dollars']; //-->(ex: 25.06) will be read as a string should it be cast to double?
$b= $_POST['discount_rate'];//-->(ex: 0.35) value will always be less than 1
$valueToBeStored= $a * $b; //--> any hint here is welcomed
$valueFromDatabase= $row['price']; //--> price column in database could be double, decimal,...etc.
$priceToPrint=$valueFromDatabase * 0.25; //again cast needed or not?
मुझे आशा है कि आप इस नमूना कोड का उपयोग अधिक उपयोग के मामलों को बाहर लाने के साधन के रूप में करेंगे और न ही इसे शाब्दिक रूप से लेने के लिए।
बोनस प्रश्न यदि मैं ORM जैसे Doctrine या PROPEL का उपयोग कर रहा हूं, तो मेरे कोड में पैसे का उपयोग करना कितना अलग होगा।
decimal
C # के प्रकार में सीमित परिशुद्धता है, लेकिन मौद्रिक मूल्यों के लिए पूरी तरह से अनुकूल है।