0

Cのfloat値を四捨五入できる関数を探しています。数値0.1153846を小数点以下6桁まで四捨五入して、出力を0.115385とするとします。

lroundf()のようなObjective Cには関数がありますが、私のコンテキストでどのように使用できるかわかりません。

私はgccコンパイラを使用していますが、助けていただければ幸いです。

4

4 に答える 4

1
float f = 0.1153846;
f = floor(f * 1000000) / 1000000;

これはうまくいくはずです。

于 2012-09-14T09:32:47.450 に答える
1

あなたはしたいかもしれません

  double x = 0.1153846;
  double rx = round (x * 1e6) * 1.e-6;

ただし、IEEE 754 浮動小数点は、基数 2 の仮数を持つ 2 進数であることに注意してください。

于 2012-09-14T09:33:09.493 に答える
1

float が 10 進数型であることは非常にまれです。つまり、何をしても、丸めの結果はほとんどの場合、float で表現できず、表現可能な数値に一致するように再度調整されます。

計算目的でこのような丸めが本当に必要な場合、浮動小数点型は使用するのに適切な型ではない可能性があります。

表示目的のみの場合は、printfファミリーから提供されたコントロールを使用してください。

于 2012-09-14T09:49:06.353 に答える