तो मैं एक समारोह है कि कुछ इस तरह दिखता है:किसी भी तरह चर बदल सकते हैं?
float function(){
float x = SomeValue;
return x/SomeOtherValue;
}
कुछ बिंदु पर, इस समारोह अतिप्रवाह और एक बहुत बड़ी नकारात्मक मान देता है। कोशिश करते हैं और वास्तव में, जहां इस हो रहा था नीचे ट्रैक करने के लिए, मैं एक अदालत बयान जोड़ा ताकि समारोह इस तरह देखा:
float function(){
float x = SomeValue;
cout << x;
return x/SomeOtherValue;
}
और यह काम किया! बेशक, मैंने डबल का उपयोग कर पूरी तरह से समस्या हल की। लेकिन मैं उत्सुक हूं कि जब मैंने इसे देखा तो फ़ंक्शन ठीक से क्यों काम करता था। क्या यह सामान्य है, या कहीं और एक बग हो सकता है कि मैं याद कर रहा हूँ?
(यह किसी भी मदद है, नाव में संग्रहीत मूल्य सिर्फ एक पूर्णांक मान है, और नहीं एक विशेष रूप से बड़ा है। मैं सिर्फ एक नाव में रख कास्टिंग से बचने के लिए।)
http://gcc.gnu.org/wiki/x87note पर इस के लिए एक जीसीसी नोट भी है, इस अद्भुत व्यवहार के कारण, फ़्लोटिंग पॉइंट कंप्यूटेशंस की तुलना करना भी पूर्व-गणना मूल्यों का उपयोग करते समय स्वाभाविक रूप से टूटा हुआ है। – hazzen