2011-09-03 15 views
18

एनोटेशन:एक फ्लोट पर सिद्धांत 2 - 2 दशमलव स्थान?

/** 
* @ORM\Column(type="float", scale="2") 
*/ 
protected $curr_price; 

मैं इसे उपयोग कर रहा हूँ Symfony 2.

साथ और इस क्षेत्र में एक डबल MySQL में डेटाबेस के बजाय 2 बिंदु परिशुद्धता के साथ नाव बन जाता है।

मैं क्या गलत कर रहा हूं? मैं डीबी हटाने, पुन: लगाने आदि ...

+1

आपके प्रश्न से संबंधित नहीं हालांकि, भंडारण की कीमतों के रूप में एक चल बिन्दु (आम तौर पर है) एक बहुत बुरा अभ्यास। – Martijn

+0

कृपया और विस्तार करें। – Tool

+0

कृपया देखें http://stackoverflow.com/questions/1165761/decimal-vs-double-which-one-should-i-use-and-when। – Martijn

उत्तर

27

दोनों precision और scale गुण केवल decimal मानचित्रण प्रकार (link) के साथ काम करने की कोशिश की। मेरा सुझाव है कि आप decimal प्रकार का उपयोग करें।

क्यों यह फ्लोट के बजाय डबल फ़ील्ड बना रहा है, मुझे पूरी तरह से यकीन नहीं है। इसे शायद सभी समर्थित डेटाबेस के साथ संगत होने के साथ करना है। मुझे double मानचित्रण प्रकार का कोई उल्लेख नहीं है, इसलिए मुझे लगता है कि वे दोनों के लिए एक ही प्रकार का उपयोग करते हैं।

8
* में

.yml

curr_price: 
    type: decimal 
    precision: 10 
    scale: 2 
7
/** 
* @ORM\Column(type="float", scale=2) 
*/ 
protected $curr_price; 

पैमाने एक पूर्णांक होना चाहिए, और आप एक स्ट्रिंग का उपयोग कर रहे

+0

[डॉक्स] के अनुसार (http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/basic-mapping.html#property-mapping): * स्केल: (वैकल्पिक, डिफ़ॉल्ट 0) दशमलव (सटीक संख्यात्मक) कॉलम के लिए स्केल (** केवल दशमलव कॉलम ** के लिए लागू होता है), जो दशमलव बिंदु के दाईं ओर अंकों की संख्या का प्रतिनिधित्व करता है और सटीक से अधिक नहीं होना चाहिए। * –

संबंधित मुद्दे