2012-05-16 18 views
10

मुझे दो मानों की तुलना करने की आवश्यकता है। एक मान price है जो कुछ की वर्तमान कीमत का प्रतिनिधित्व करता है और इसलिए decimal क्योंकि आप वास्तव में इस कीमत से कुछ खरीद या बेच सकते हैं।डबल और दशमलव की तुलना करने के लिए मुझे डबल से दशमलव या दशमलव में डबल डालना चाहिए?

एक और मूल्य जो और गणितीय गणना का परिणाम तो double है यह सिर्फ estimation है और आप वास्तव में इस esitmatedPrice

अब मैं अगर price < estimatedPrice खरीदना चाहते द्वारा किसी भी "ऑपरेशन" ऐसा नहीं कर सकते क्योंकि estimatedPrice है।

तो क्या मुझे कीमत को डबल या अनुमानित करने के लिए दशमलव का अनुमान लगाया जाना चाहिए?

मैं समझता हूं कि कास्टिंग के बाद मुझे "थोड़ी सी" संख्या मिल जाएगी, लेकिन ऐसा लगता है कि मेरे पास अन्य विकल्प नहीं हैं।

+0

@ ब्लूशिपी यदि आप महंगे हैं तो आप मूल्य डेटा के लिए फ्लोट का उपयोग नहीं कर सकते हैं। उदाहरण के लिए, फ्लोट '123456.78' का प्रतिनिधित्व नहीं कर सकता है। – phoog

+0

दशमलव अधिक स्मृति लेता है और इसकी एक छोटी सी सीमा के साथ अधिक महत्वपूर्ण संख्याएं होती हैं और इसलिए फ़्लोटिंग पॉइंट्स (फ्लोट/डबल) की तुलना में "सटीक" ("सटीक" के आपके दृश्य के आधार पर) हो सकती है। यदि आप चाहें तो आप दोनों मूल्यों, या दशमलव, या फ्लोट के लिए काफी खुशी से डबल का उपयोग कर सकते हैं, खासकर अगर कीमत हमेशा दो दशमलव स्थानों पर जा रही है। आप स्पष्ट रूप से किसी भी फ़्लोटिंग पॉइंट से दशमलव तक परिवर्तित नहीं कर सकते हैं (क्योंकि वे पूरी तरह से अलग चीजें हैं), इसलिए इस मामले में सभी प्रकार के लिए एक चुनने के लिए सबसे अच्छा हो सकता है। यह सिफारिश करने के लिए दूसरों को छोड़ देगा! (मैं दशमलव, व्यक्तिगत रूप से जाना होगा) – BlueChippy

+0

@phoog True, परिदृश्य पर निर्भर करता है। मेरा व्यक्तिगत pref या तो दशमलव (पसंदीदा) या डबल है ... लेकिन यदि संभव हो तो बोर्ड में उस प्रकार का उपयोग करें। – BlueChippy

उत्तर

11

यह डेटा पर निर्भर करता है। दशमलव में अधिक सटीकता है; डबल की अधिक रेंज है। यदि डबल दशमलव सीमा से बाहर हो सकता है, तो आपको दशमलव को दोगुना करना चाहिए (या वास्तव में आप एक विधि लिख सकते हैं जो कास्टिंग के बिना परिणाम देता है, यदि डबल मान दशमलव सीमा से बाहर है; नीचे उदाहरण देखें)।

इस मामले में, ऐसा लगता है कि डबल मान दशमलव सीमा के बाहर होगा, इसलिए (विशेष रूप से जब आप मूल्य डेटा के साथ काम कर रहे हैं) तो आपको डबल से दशमलव डालना चाहिए।

उदाहरण (NaN मानों का प्रबंधन कैसे कुछ तर्क इस्तेमाल कर सकते हैं):

private static int Compare(double d, decimal m) 
{ 
    const double decimalMin = (double)decimal.MinValue; 
    const double decimalMax = (double)decimal.MaxValue; 
    if (d < decimalMin) return -1; 
    if (d > decimalMax) return 1; 
    return ((decimal)d).CompareTo(m); 
} 
0

मैंने सॉफ्टवेयर में पहले कीमतों के साथ कभी काम नहीं किया है, लेकिन जो मैंने सुना है, उससे कई पूर्णांक के साथ सौदा करते हैं। उदाहरण के लिए, $ 1.23 के लिए, इसे पूर्णांक 123 के रूप में संग्रहीत करें। जब आप उपयोगकर्ता को परिणाम आउटपुट करते हैं तो दशमलव पर रूपांतरण बहुत अंत में किया जाता है।

इसी प्रकार, आपके अनुमानित मूल्य के लिए, क्या आप उन संख्याओं से निपट सकते हैं जो कहें (कहें) 100 गुना बड़ा?

+0

यह एक अच्छा अनुकूलन हो सकता है, हालांकि अभी मुझे डबल या दशमलव से दोगुना करना चाहिए। इसके अलावा मुझे लगता है कि 'int' का उपयोग' दशमलव 'के अंदर संभवतः मूल्य के लिए 'दशमलव' का उपयोग करना आसान होगा। – javapowered

1

मैं तुम्हें दशमलव में बदलने की सलाह देते हैं। क्योंकि ऐसा लगता है कि आप पैसे के मूल्यों में हेरफेर करना चाहते हैं। लेकिन मैं यह संक्षिप्त उत्तर दे सकता हूं: सटीक (विशेष रूप से वित्तीय अनुप्रयोगों के लिए धन मूल्य में हेरफेर करना) आवेदन दशमलव का उपयोग करें। और यदि आप कम संसाधन पसंद करते हैं और अधिक गति का उपयोग डबल करते हैं।

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