web-dev-qa-db-ja.com

フロートを丸めるiOS

小数点以下の桁数が多い浮動小数点数があります。次に例を示します。

float fRes = 10.0 / 3.0;

実際には、fRes値は3.3333333333333です。たとえば、2桁の10進数を設定できます。

float fRes = 10.0 / 3.0;
// fRes is 3.333333333333333333333333
float fResOk = FuncRound( fRes, 2 );
// fResOk is 3.33

前もって感謝します

21
ghiboz

特定の桁数に丸める正しい関数を探していると仮定すると、おそらく次のことを行うのが最も簡単です。

fResOk = roundf( fRes*100.0)/100.0;

これにより、値に100が乗算され(2桁の有意性が得られます)、値が丸められ、元の大きさに戻ります。

30
gaige

この丸められた数値をどこで使用しているのかわかりませんが、ユーザーに表示するときにのみ値を丸める必要があります。たとえば、浮動小数点数を丸めるCベースのフォーマット文字列の方法があります。

_[NSString stringWithFormat:@"%.2f", value];
_

すでにお読みのように、浮動小数点数は実数の近似値であるため、fResOk = roundf( fRes*100.0)/100.0;を実行しても3.33が得られない可能性がありますが、3.33までの浮動小数点数で取得できるのと同じくらい近い数になります。

59
Nathan Day