2017-10-08 103 views
1

所以用浮點數當我輸入一個數字時,它打印出6個十進制數字。我知道我可以用「%.2f」之類的東西來調整數字位數(然後數字只有兩個)。但我的問題是,是否有任何命令可以輸出輸入的確切位數。設置小數點後的數字

如果我

示例輸入數2.5

由於只有輸出( 「%F」,數);它會打印2.500000

或與printf(「%.2f」,數字);它將打印2.50

那麼,有沒有辦法,它可以打印2.5(帶小數點後一位數),並在同一時間,如果我輸入數字,如2.51這將打印2位小數,這個數字(2.51

+0

有沒有簡單的方法,沒有。變量沒有辦法記住用戶如何輸入數字。 –

+0

無論何時讀取值時,都將其視爲字符串,將其轉換爲double/float分隔變量,並在需要時使用適當的值。 – Crozin

+0

由於二進制浮點數2.5和2.50看起來完全一樣。 –

回答

1

是的。爲此,您必須編寫一些代碼來確定需要打印的小數點後的位數。

我將離開僞代碼轉換低於實際代碼,您:

value = 2.51 
places = 1 
while(testDigitsAfterDecimal(value, places) { places ++ } 
sprintf(format_string, "%%.%df", places) 
printf(format_string, value) 

總之,如果你寫的代碼進行數學測試的地方小數點以下,並保持多少地方的數,您需要,您可以使用該號碼sprintf創建一個格式字符串,指定所需的位置數。完成後,您可以將該字符串作爲打印您的號碼的格式傳遞給printf

相關問題