1樓:小城小閱
這個你得知道浮點型資料的儲存格式;
我簡單給你說下,具體不懂你再問我;
11.2的小數部分0.2轉換為2進位制則是無限迴圈的00110011001100110011...
單精度在儲存的時候用23bit來存放這個尾數部分(前面9位元儲存指數和符號);同樣0.6也是無限迴圈的;
而列印格式為%f的時候,資料會以8位元組出棧!這個時候後32bit都是0,(正常來講原數是一直迴圈的)所以列印出的結果就這樣了;
而你定義成雙精度,它本身就是8位元組儲存,(相比單精度儲存,他後32bit是有資料的!)所以這個時候取出的8位元組,四捨五入直接就是0.6!
就好比你定義輸出%.1f一樣,也會列印出0.6,是一個道理!
不知你明白沒。單精度雙精度轉換的時候,一般小數末位不是5的話,都會丟失資料的!原理就像上面說的一樣。記得采納哦親!
2樓:
浮點數,你就別指望他給你算出你想要的值,它都講究精確到小數點後幾位的
3樓:匿名使用者
把輸出改為printf("%.1f",y);
4樓:與子如初見
不是對著呢麼?
浮點型參與運算會有誤差。
請問這C語言程式錯在哪,請問我這C語言程式錯在哪
冬一又二分之一 首先 int a 要加分號 else下面有多條語句,應該加上 include int main int a printf input a scanf d a if a 0 a 100 printf error n else switch a 10 case 10 case 9 pri...
C語言程式問題,我的c語言程式有什麼問題?
fun x,y,1 求每一行的最小值放進y裡面 fun x,y,0 求每一行的最大值放進y裡面 伺服器 這個應該是判斷條件有問題,那個判斷形式應該是?前後返回的是判斷條件為真的時候的值,後面返回的是判斷條件不成立的時候的值,你這個寫法根本沒有改變flag的值,因為根本就沒有做賦值的操作。我的c語言程...
用C語言編寫程式資料結構,用C語言編寫程式 資料結構
第5 題 include include define max 256 typedef int list max typedef int elemtype typedef int status define overflow 1 define ok 1 define list init size 8...