float x=-789.124;
printf(“%f”,x);
x=-789.124023
这是怎么计算的?
他这个结果为什么最后是023?
-798.124æ¢èªä¸ºäºè¿å¶å½¢å¼çå¼æ¯ï¼
-1100011111.111000000100000110001001001101110100101111
å 为æºå¨å é¨å¿ 须使ç¨äºè¿å¶æ¹å¼åå¨ï¼èä¸ç²¾åº¦æéï¼è¿æ ·å»é¤äºè¶ è¿çä½æ°åï¼å»é¤æ¶è¦åèäºå ¥ï¼ï¼ç»æä¸åå§å¼å°±æå·®å¼äºï¼æ以浮ç¹æ°å¤æ°é½æ¯ä¸åç¡®çã
å ·ä½å°æ¬æ°æ«å°¾ä¸ºä»ä¹æ¯023ï¼è¿è¦çæ使ç¨çç±»å精度çå°æ°ç¹ä½æ°ï¼ä½æ°ä¸åç»æä¹å¯è½ä¼ä¸åï¼å 为ä»ä¸åçä½ç½®æªæã
0.5转æ¢ä¸ºäºè¿å¶æ¯0.1ï¼è¿æ ·çæ°æ¯è½ç²¾ç¡®è¡¨ç¤ºäºï¼å®ä¸ä¼ä¹±ã
-1100011111.111000000100000110001001001101110100101111
å 为æºå¨å é¨å¿ 须使ç¨äºè¿å¶æ¹å¼åå¨ï¼èä¸ç²¾åº¦æéï¼è¿æ ·å»é¤äºè¶ è¿çä½æ°åï¼å»é¤æ¶è¦åèäºå ¥ï¼ï¼ç»æä¸åå§å¼å°±æå·®å¼äºï¼æ以浮ç¹æ°å¤æ°é½æ¯ä¸åç¡®çã
å ·ä½å°æ¬æ°æ«å°¾ä¸ºä»ä¹æ¯023ï¼è¿è¦çæ使ç¨çç±»å精度çå°æ°ç¹ä½æ°ï¼ä½æ°ä¸åç»æä¹å¯è½ä¼ä¸åï¼å 为ä»ä¸åçä½ç½®æªæã
0.5转æ¢ä¸ºäºè¿å¶æ¯0.1ï¼è¿æ ·çæ°æ¯è½ç²¾ç¡®è¡¨ç¤ºäºï¼å®ä¸ä¼ä¹±ã
温馨提示:答案为网友推荐,仅供参考
第1个回答 2014-06-25
浮点数都是有精度问题的,就算你设 x=0 ,用%f打印出来结果会是零点几,系统认为一个数足够小的时候就是0了. 如果很在意,可以把 %f 改为 %7.3f , 以限定所要的显示位数