2013-02-18 110 views
47

मैं अपने Symfony2 एप्लिकेशन के लिए Doctrine2 में एक वित्तीय आकृति रखने के लिए दशमलव फ़ील्ड बना रहा हूं।सिद्धांत 2 में दशमलव फ़ील्ड प्रकार निर्दिष्ट करते समय स्केल और सटीक का क्या अर्थ है?

वर्तमान में, यह इस तरह दिखता है:

/** 
* @ORM\Column(type="decimal") 
*/ 
protected $rate; 

जब मैं एक मूल्य में प्रवेश किया और कहा मूल्य डेटाबेस से कायम था, यह एक पूर्णांक के अंक में बदल गया था। मुझे लगता है कि मुझे मैदान के लिए सटीकता और स्केल प्रकार निर्धारित करने की आवश्यकता है, लेकिन मुझे किसी को यह समझाने की ज़रूरत है कि वे क्या करते हैं?

Doctrine2 documentation का कहना है:

परिशुद्धता: एक दशमलव (सटीक सांख्यिक) स्तंभ के लिए पैमाने (: एक दशमलव (सटीक सांख्यिक) स्तंभ के लिए सटीक (केवल दशमलव स्तंभ के लिए लागू होता है)

पैमाने केवल दशमलव कॉलम के लिए लागू होता है)

लेकिन यह मुझे एक बहुत भयानक नहीं बताता है।

मुझे अनुमान है कि सटीक अनुमान लगाने के लिए दशमलव स्थानों की संख्या है, इसलिए मुझे लगता है कि यह 2 होना चाहिए, लेकिन स्केल क्या है? महत्वपूर्ण आंकड़े पैमाने पर है?

क्या मेरे क्षेत्र की घोषणा यह होनी चाहिए? : -

/** 
* @ORM\Column(type="decimal", precision=2, scale=4) 
*/ 
protected $rate; 

उत्तर

81

सिद्धांत एसक्यूएल प्रकारों के समान प्रकारों का उपयोग करता है। दशमलव एक निश्चित सटीक प्रकार (फ्लोट के विपरीत) होता है।

MySQL documentation से लिया:

एक दशमलव स्तंभ घोषणा में, सटीक और बड़े पैमाने हो सकता है (और आमतौर पर है) निर्दिष्ट; उदाहरण के लिए:

वेतन दशमलव (5,2)

इस उदाहरण में, 5 को है और 2 पैमाने पर है। सटीक मानों के लिए संग्रहीत महत्वपूर्ण अंकों की संख्या का प्रतिनिधित्व करता है, और पैमाने दशमलव बिंदु के बाद संग्रहीत अंकों की संख्या का प्रतिनिधित्व करता है।

मानक एसक्यूएल के लिए आवश्यक है कि DECIMAL (5,2) पांच अंकों और दो दशमलव के साथ किसी भी मूल्य को स्टोर करने में सक्षम हो, इसलिए मूल्यों को वेतन कॉलम रेंज में 99 99.99 से 999.99 तक संग्रहीत किया जा सकता है।

21

बस एक क्विक नोट:

@ORM\Column(type="decimal", precision=8, scale=2) 
7
@Column(type="decimal", precision=5, scale=2) means 123.45 
: मैं गुण परिशुद्धता और पैमाने से बोलियां दूर करने के लिए है, इसलिए की तरह था