1

私は小さな問題に遭遇しました。計算に使用されるcの余分な小数点以下の桁数を削除しようとしています。

たとえば、67.98345の場合、67.98にします。

しかし、printfステートメントだけではありません。ダブルは実際には67.98345ではなく67.98である必要があります

4

2 に答える 2

2

@mvpの答えは大丈夫ですが、小さな問題があります。x が double の大きさの最大値に近い場合、乗算の中間値が double をオーバーフローする可能性があります。この問題を解決する別の方法は次のとおりです。

double intpart, fracpart;

fracpart = modf(x, &intpart);
x_rounded = intpart + round(fractpart * 100) / 100;
于 2013-03-03T03:23:02.380 に答える
0

これは最も近い値に丸められます:

double x_rounded = round(x*100)/100;

完全を期すために、これらは切り捨てまたは切り上げられます。

double x_rounded_down = floor(x*100)/100;
double x_rounded_up   = ceil (x*100)/100;
于 2013-03-03T03:12:17.497 に答える