2011-10-12 165 views
1

我嘗試下面的例子:十六進制浮點舍入

printf("%9.1a",4488.09); //Only one digits has to be printed after digital point 

的4488.09 == 1 0001 1000 1000.0001011100001010001111010111000010100011110101 二進制表示應成爲0x1.1p + 12or 0x1.2p + 12?

如果必須對二進制表示或1.18 + 13表示執行舍入操作(同時打印),那麼我無法撤銷它嗎?如果它應該執行ceil() - 8正好在十六進制範圍的中間。 ..

回答

1

二進制總是可以轉換爲十進制而不會丟失,除非將小數位數限制爲太小。如果尾數值類似於1.188170A3D70A4,並且您將printf()限制爲只有1個小數位,則應該爲尾數打印1.2。如果將其限制爲2個小數位,則應該得到1.19。如果3,那麼1.188。如果4,那麼1.1881。等等。

+0

http://ideone.com/OT8bt –

1

是的,當你printf()一個9.1的數字時,你會四捨五入。

如果你不想四捨五入,你可以將低位清零。

您的錯誤似乎認爲將出現四捨五入的部分數字,但不是整數。

也在這裏田納西州,我們不使用這個詞,尾數。但我們確實使用「小數部分」