#include<stdio.h>
int main()
{
float a,b;
a=4.375;
b=4.385;
if(a==4.375)
printf("YES\n");
else
printf("NO\n");
if(b==4.385)
printf("YES\n");
else
printf("NO\n");
return 0;
}
उत्तर:तुलना इस कोड के
YES
NO
मुझे हमेशा यही लगता अगर मैं डबल मूल्य के साथ एक नाव की तुलना करें। यह कभी मेल नहीं खाएगा। जब तक कि मूल्य शुद्ध पूर्णांक न हो। लेकिन यहाँ तैरने लगते हैं "एक" 4.375 उस में सटीक है, लेकिन "बी"
printf("%0.20f\n",a);
printf("%0.20f\n",b);
This prints :
4.37500000000000000000
4.38500022888183593750
but if i print
printf("%0.20f\n",4.475);
It prints 4.47499990463256835938
कैसे की जाती है यह गोलाई प्रभाव से कुछ में और दूसरों में नहीं दिख रहा है नहीं है।
क्या कोई इसे समझा सकता है। फ्लोट वैरिएबल में मूल्य उसमें निहित होने पर और जब ऐसा नहीं होता है तो "WE" का न्याय कैसे करना चाहिए?
0.375 = 3/8, 8 = 2^3 के बाद से, यह बाइनरी चर – gkovacs90
में फ्लोट शाब्दिक के साथ फ्लोट की तुलना में अजीब आउटपुट के संभावित डुप्लिकेट में संग्रहीत करने में समस्या नहीं है (http://stackoverflow.com/प्रश्न/1839422/अजीब-आउटपुट-इन-तुलना-फ्लोट-साथ-फ्लोट-शाब्दिक) – devnull
डुप्लिकेट नहीं ..मैंने दोनों स्थितियों के बीच अंतर पूछा सर 0 :) –