द्वारा गणना किए गए मानों के बीच विसंगति मैं कहूंगा कि फोरट्रान और सी ++ द्वारा गणना की गई संख्यात्मक मान अधिक समान होंगे। हालांकि, जो मैं अनुभव कर रहा हूं, उससे पता चला है कि गणना की गई संख्या बहुत कम दशमलव अंकों के बाद अलग हो जाती है। मैं इस समस्या को पूर्व भाषा से बाद में कुछ विरासत कोड पोर्ट करने की प्रक्रिया के दौरान आया हूं। मूल फोरट्रान 77 कोड ...फोरट्रान और सी ++
INTEGER M, ROUND
DOUBLE PRECISION NUMERATOR, DENOMINATOR
M = 2
ROUND = 1
NUMERATOR=5./((M-1+(1.3**M))**1.8)
DENOMINATOR = 0.7714+0.2286*(ROUND**3.82)
WRITE (*, '(F20.15)') NUMERATOR/DENOMINATOR
STOP
... आउटपुट .842201471328735, अपनी सी जबकि ++ बराबर ...
int m = 2;
int round = 1;
long double numerator = 5.0/pow((m-1)+pow(1.3, m), 1.8);
long double denominator = 0.7714 + 0.2286 * pow(round, 3.82);
std::cout << std::setiosflags(std::ios::fixed) << std::setprecision(15)
<< numerator/denominator << std::endl;
exit(1);
... रिटर्न .842201286195064। यही है, गणना मान के बराबर हैं, केवल छठे दशमलव तक। यद्यपि विशेष रूप से एक फोरट्रान वकालतकर्ता नहीं, मैं अपने परिणामों को 'सही' के रूप में मानने के इच्छुक हूं, जिसने संख्या क्रंचर की वैध प्रतिष्ठा दी है। हालांकि, मैं गणना मूल्यों के बीच इस अंतर के कारण के बारे में चिंतित हूं। क्या किसी को पता है कि इस विसंगति का कारण क्या हो सकता है?
http://docs.sun.com/source/806-3568/ncg_goldberg.html –
सी ++ परिणाम अधिक सही '0.8422012861950640318689334181' – jfs
शायद तुम कोड के दोनों सेट में कुछ मध्यवर्ती मूल्यों प्रिंट आउट कर सकता है। –