2017-10-08 9 views
1

float数字を入力すると、小数点以下は6桁で印刷されます。私は "%.2f"(数字は2つしかない)のような数字で桁数を調整できることを知っています。しかし、私の質問は、入力された正確な桁数を表示するコマンドはありますか?小数点以下の桁を設定する

例のみのprintf( "%のF" ナンバー)でI入力数2.5

場合。それは印刷されます2.500000

またはprintf( "%2f"、number); I入力数等2.51は、それが2進ポイントとその数を印刷する場合には2.5(一方小数点付き)と同じ時間でだから、印刷できることをどのような方法がある2.50

を印刷します(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に渡して番号を印刷する形式にすることができます。

関連する問題