0

に与えられた浮動小数点値の精度指定子printfにより、プログラマは小数点以下の桁数を指定できます。プログラマーが値を丸めるために小数点のに何printf桁を指定できるようにする同様の精度指定子がありますか?

たとえば、 に渡す場合、最も157近い10に丸めるように指示するとprintf、値が画面に出力されます。160

4

4 に答える 4

4

私の知る限り、それprintfを行う方法はありません。に渡す前に、値を手動で丸める必要がありますprintf。例えば:

printf("%d\n", myRound(157, 10));

int myRound(int x, int b) {
    return ((x + b/2) / b) * b;  // TODO: handling for overflow, etc.
}
于 2013-06-28T18:11:05.730 に答える
3

printfはデータを変更せず、書式指定子は表示方法のみを指定します。指定すると、何らかの形でprintf 157印刷されます。157

丸め関数については、C数学ライブラリの丸め関数を確認してください。

于 2013-06-28T18:06:34.327 に答える
1

いいえ。おそらく最も近いprintf方法は、科学表記法を使用することです。

printf("%.1e\n", 157.0);

これは出力されます1.6e+02が、これは間違いなくあなたが望むものではありません.

于 2013-06-28T18:13:01.297 に答える
0

私はmyRound(157, 10)解決策が好きですが、追加すると思いました:

printf("%d0\n", (n+5)/10);   // int n;
printf("%.0f0\n", x/10);     // double x; (fails for INF, NAN)
于 2013-06-28T20:41:19.067 に答える