2011-09-14 31 views
27

कोल्डफ्यूजन में गणित संचालन फ्लोटिंग पॉइंट गणित के मुद्दों से क्यों प्रभावित नहीं होते हैं? हालांकि equivlant जावा कोड का उत्पादन मैं क्या 'डी की उम्मीद है जब दो युगल जोड़नेकोल्डफ्यूजन में 0.06 + 0.01 = 0.07 क्यों है?

result = 0.06 + 0.01; 

writedump(result); 
writedump(result.getClass().getName()); 

कौन सा आउटपुट

0,07

java.lang.Double

: कोड ले लो :

public static void main(String[] args) { 
    double a = 0.01d; 
    double b = 0.06d; 

    System.out.println(a + b); //0.06999999999999999 
} 

फ़्लोटिंग गणित की वास्तविकताओं (http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html) की वजह से मैं कोल्डफ्यूजन से यह देखने की अपेक्षा करता हूं।

क्या कोल्डफ्यूजन दृश्यों के पीछे कुछ "जादू" करता है या क्या मैं यहां एक पृथक विसंगति देख रहा हूं?

+0

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

+0

हाँ, वह स्निपेट है। मैंने क्या किया होगा यह देखने के लिए मैंने बस परिदृश्यों का सबसे सरल बनाया है। क्या डर लगता है अगर मैं उस कोड को एक कदम आगे ले जाता हूं और 'ए = 0.01 करता हूं; बी = 0.06; writedump (a.getClass()। getName(); 'मुझे एक स्ट्रिंग मिलती है। दृश्यों के पीछे निश्चित रूप से कुछ अंतर्निहित रूपांतरण चल रहा है। – bittersweetryan

+2

सीएफ़ ज्यादातर मूल्यों को तारों के रूप में स्टोर करता है। केवल उन्हें अन्य प्रकारों में परिवर्तित करना (संख्या, तिथि, आदि) आवश्यकतानुसार। जैसे कि गणितीय ऑपरेटर जैसे '+' लागू होता है। http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec09af4-7fc3.html – Leigh

उत्तर

35

मुझे दृढ़ता से संदेह है कि यह आउटपुट पर अलग-अलग गोल कर रहा है। दूसरे शब्दों में, समस्या अभी भी वहां है - यह तब दिखाई नहीं दे रहा है जब यह विशेष मान writedump के साथ मुद्रित किया गया हो।

क्या होगा यदि आप का उपयोग होता है:

writedump(String.valueOf(result)); 

?

+0

यह करता है, स्ट्रिंग शो के मूल्य को डंप करते हुए .69 99 99 99 99 99 99; – bittersweetryan

+3

'writedump' और' cfdump' बहुत सारे स्वरूपण करते हैं - इससे जटिल वस्तुओं को बहुत आसान लग रहा है लेकिन ऐसा लगता है यह इस तरह के मामलों में कुछ अस्पष्टता भी पेश करता है। – Antony

+0

@ एंटनी - हाँ। मैंने इसे पूरी तरह से भरोसा नहीं किया है। क्योंकि इसे कई मामलों में परिशुद्धता पर रीडबिलिटी के पक्ष में डिजाइन करने के लिए डिज़ाइन किया गया है;) – Leigh

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

  • कोई संबंधित समस्या नहीं^_^