に与えられた浮動小数点値の精度指定子printf
により、プログラマは小数点以下の桁数を指定できます。プログラマーが値を丸めるために小数点の前に何printf
桁を指定できるようにする同様の精度指定子がありますか?
たとえば、 に渡す場合、最も157
近い10に丸めるように指示するとprintf
、値が画面に出力されます。160
私の知る限り、それ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.
}
printf
はデータを変更せず、書式指定子は表示方法のみを指定します。指定すると、何らかの形でprintf
157
印刷されます。157
丸め関数については、C数学ライブラリの丸め関数を確認してください。
いいえ。おそらく最も近いprintf
方法は、科学表記法を使用することです。
printf("%.1e\n", 157.0);
これは出力されます1.6e+02
が、これは間違いなくあなたが望むものではありません.
私はmyRound(157, 10)
解決策が好きですが、追加すると思いました:
printf("%d0\n", (n+5)/10); // int n;
printf("%.0f0\n", x/10); // double x; (fails for INF, NAN)