कोल्डफ्यूजन में गणित संचालन फ्लोटिंग पॉइंट गणित के मुद्दों से क्यों प्रभावित नहीं होते हैं? हालांकि 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) की वजह से मैं कोल्डफ्यूजन से यह देखने की अपेक्षा करता हूं।
क्या कोल्डफ्यूजन दृश्यों के पीछे कुछ "जादू" करता है या क्या मैं यहां एक पृथक विसंगति देख रहा हूं?
सबकुछ मैं Google कहता हूं कि सीएफ के बारे में कुछ खास नहीं है और यह आपके द्वारा अपेक्षित परिणामों का उत्पादन करता है (और लोग पूछते हैं, क्योंकि वे फ़्लोटिंग पॉइंट परिशुद्धता को समझ नहीं पाते हैं)। क्या आप सुनिश्चित हैं कि आपके सीएफ कोड में कुछ भी नहीं चल रहा है? –
हाँ, वह स्निपेट है। मैंने क्या किया होगा यह देखने के लिए मैंने बस परिदृश्यों का सबसे सरल बनाया है। क्या डर लगता है अगर मैं उस कोड को एक कदम आगे ले जाता हूं और 'ए = 0.01 करता हूं; बी = 0.06; writedump (a.getClass()। getName(); 'मुझे एक स्ट्रिंग मिलती है। दृश्यों के पीछे निश्चित रूप से कुछ अंतर्निहित रूपांतरण चल रहा है। – bittersweetryan
सीएफ़ ज्यादातर मूल्यों को तारों के रूप में स्टोर करता है। केवल उन्हें अन्य प्रकारों में परिवर्तित करना (संख्या, तिथि, आदि) आवश्यकतानुसार। जैसे कि गणितीय ऑपरेटर जैसे '+' लागू होता है। http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec09af4-7fc3.html – Leigh