2013-03-15 16 views
10

Objective-Cの小数点以下2桁を10進数で丸める方法を教えてください。Objective-Cの小数点以下2桁を丸める方法

私はこのようにしたいと思います。 (文、次の番号のすべてが浮動小数点値である)

•ラウンド

10.118 => 10.12

10.114 => 10.11

•切り上げ

10.118 => 10.12

•床

10.114 => 10.11

私の質問をチェックしていただきありがとうございます。

+3

あなたがCでそれをするのと同じ方法:) – dasblinkenlight

+0

結果の値は文字列か浮動小数点のままにする必要がありますか? – coverback

+0

http://stackoverflow.com/questions/10749483/how-to-convert-a-float-value-to-rounded-off-in-iphone-app/10749620#10749620 –

答えて

28

それを提示するとき、あなたが実際にはない四捨五入される数を必要とした場合:小数点以下2桁

float roundToN(float num, int decimals) 
{ 
    int tenpow = 1; 
    for (; decimals; tenpow *= 10, decimals--); 
    return round(tenpow * num)/tenpow; 
} 

か、常に:あなたが使用することができます

float roundToTwo(float num) 
{ 
    return round(100 * num)/100; 
} 
+0

ええと、これは私のためには機能しません。それは私に小数点以下6桁の浮動小数点を与えます。 –

+2

@TheJuicedWord:正しいNSLog/printf変換指定子は、明らかに '%.2f'である必要があります。 –

+1

@ user529758でも、実際の 'float'は正しく丸められていないという事実にはまだ対応していません。 –

0
float roundedFloat = (int)(sourceFloat * 100 + 0.5)/100.0; 
+0

これは負の数には正しくありません。 C標準ライブラリには 'round()'関数があります。 –

+0

真ですが、1.この例では正の数しかありませんでした。私の目標はちょうどアイデアを表示することだった;) – Gobra

+1

私はあなたのポイントを参照してください、これは*アイデアではありません。*申し訳ありません。 –

9

以下小数点以下2桁にフォーマットするコード

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
formatter.numberStyle = NSNumberFormatterDecimalStyle; 
formatter.setMaximumFractionDigits = 2; 
formatter.setRoundingMode = NSNumberFormatterRoundUp; 

NSString *numberString = [formatter stringFromNumber:@(10.358)]; 
NSLog(@"Result %@",numberString); // Result 10.36 
+0

OPは実際に*番号を丸めることを望んでいると思います。 @Takuy​​aによって与えられた条件どおり –

+0

(10.118 => 10.12 10.114 => 10.11 •切り上げ 10.118 => 10.12 •床 10.114 => 10.11)私はこれが彼のために働くべきだと思います。 – Suhaiyl

+0

私は、丸められた値を*印字*するのではなく、丸められた値を*印字することを望んでいます。 –

関連する問題