ダブルを追加するプログラムがありますが、0以外の正確な数を表示するようにしたいと思います。たとえば、私は13.4と10.05を追加しました。 23.450000と表示されます。どうすれば%.2lfを使わずに23.45を表示するようにするのですか? 12.4と10.1を追加すると22.50が表示されますが、22.5のみを表示する必要があるため、%.2lfを使用することはできません。悪い英語のために申し訳ありません。Cで倍精度のゼロを使わないで正確に丸める方法
0
A
答えて
0
完全な解決策ではありませんが、問題をどのように進めるかについてのヒントがあります。
あなたが望むのは、入力数字の小数点以下の桁数を最初に数えることで達成できます。これは、出力に必要な小数点桁数を決定します。明らかに、それはあなたがあなたの数字の文字列表現を持っている場合にのみ働くでしょう。
/* necessary casts removed for clarity */
int fractionalDigs1 = arg1 + strlen(arg1) - strchr (arg1, '.') - 1;
int fractionalDigs2 = arg2 + strlen(arg2) - strchr (arg2, '.') - 1;
2つの数の追加のために、あなたは出力小数の桁が乗算に、合計2つの入力引数の画分の最大値をカウントしたいでしょう - あなたが決めます。
int fractionalDigsOut = max (fractionalDigs1, fractionalDigs2);
非定数フィールド幅はそれほどのようなフィールド幅書式指定子*
と連携して出力(*
は、引数リストから引数を取り、フィールド幅としてそれを使用しています):
printf ("%8.*f", fractionalDigitsOut, num);
関連する問題
- 1. 正確な丸めによる正確な倍精度
- 2. 丸めコードの倍精度エラー
- 3. 倍精度のprintf丸め動作
- 4. 単精度への倍精度の丸め:上限の強制
- 5. C++倍精度/精度
- 6. C - IEEE 754の倍精度と単精度の格納方法
- 7. 最低の共通倍数がCで倍精度になる
- 8. Django:MySQLで倍精度の代わりにfloat precisionを使用する方法
- 9. 条件付きでJavaが倍精度に倍精度化されない
- 10. number_to_currency丸め精度が正しくない
- 11. Windowsで描画するためのC#倍精度座標フォーム
- 12. Excel 2007 SDKを使用してxlTypeNumをC++で倍精度化する方法
- 13. Cの倍精度の精度で有効数字50桁が正しく表示されない
- 14. C#の倍精度精度の損失、減算の倍数を加算するときの精度の低下
- 15. アンドロイドで精度を失うことなく結果を丸める方法
- 16. Javaで他の倍精度浮動小数点数の倍数に丸めますか?
- 17. 「真の」結果が十分に正確に表現できない場合、倍精度/浮動小数点はどのように丸められますか?
- 18. 法的には、丸められた倍精度でmod演算子を実行できますか?
- 19. C#DateTime:倍精度浮動小数点型時間の倍精度化
- 20. 倍精度
- 21. 機能CORR(倍精度、倍精度)が存在しない - のPostgresSQL
- 22. fscanfを使用してC言語の倍精度を読み取る方法
- 23. 倍精度とfmodでエラー
- 24. IEEE-754倍精度と分割方法
- 25. Javaの倍精度
- 26. 精度で倍精度を出力する
- 27. IEEEの単精度と倍精度で表される総数
- 28. Pythonの小数精度と丸め
- 29. Double.Parse精度/丸めの問題
- 30. スウィフトで倍精度以上の精度を実現
"*それは*"何を使用する手段であることを示している? 'printf()'? – alk
「22.5」は「22.50」と同じではなく、例えば「22.5」は「22.49」や「22.51」のように丸められます。したがって、実際に '22.50'を持つと' 22.5'が表示されて精度が失われます( "情報")。 22.50の場合はなぜ '22.5'を表示するのですか? – alk
なぜ '%.2lf'フォーマットを避けたいですか? – Peter