4

重複の可能性:
Objective-Cの数値の丸めObjective
-C:浮動小数点数の余分なゼロを切り捨てる方法は?
浮動小数点数の修正

Objective Cには、次のように計算に対する答えを受け取るdoubleがあります。

double answer = a / b;

double変数は整数の場合もありますが、分数の場合もあります。

NSLog(@"%f", answer)

これは、2.000000または5.142394または2.142000を返す可能性があります。

たとえば、末尾の0が表示されないように小数点以下の桁数を編集する方法があるかどうか疑問に思いました。

2.000000は25.142394は
5.1423942.142000
は2.142になります

これはどのように行うことができますか?

4

2 に答える 2

10

小数点以下の桁数をハードコーディングする場合は、小数点以下2桁になります。

NSLog(@"%.2f", answer);

フォーマット指定子の詳細については、こちらをご覧ください。

http://www.cplusplus.com/reference/clibrary/cstdio/printf/

または、小数点以下の桁数をオンザフライで変更する場合は、NSNumberFormatterクラスの使用を検討してください。

int maxDigitsAfterDecimal = 3; // here's where you set the dp

NSNumberFormatter * nf = [[NSNumberFormatter alloc] init];
[nf setMaximumFractionDigits:maxDigitsAfterDecimal];

NSString * trimmed = [nf stringFromNumber:[NSNumber numberWithDouble:3.14159]];
NSLog(@"%@", trimmed); // in this case, 3.142

[nf release];
于 2012-04-19T03:50:35.570 に答える
2

NSNumberFormatterはまさにあなたが探しているものです。(Macを使用していない場合は、お詫びします。同様のiOSドキュメントへのリンクを後で投稿します)。

編集(リクエストによる):NSNumberFormatterは実際にはiOSで利用可能であり(上記で投稿したドキュメントはiOSでも同じです)、設定する必要のあるいくつかの関連するプロパティがあります。1つは、numberStyleプロパティをNSNumberFormatterDecimalStyleに設定する必要があります(その他には、パーセント、バンカー、スペルアウトが含まれます)。NSNumberFormatterには、roundingModeプロパティも含まれています。このプロパティは、NSNumberFormatterRoundHalfEvenである必要があります。これにより、小数点が変更されて最後の桁が四捨五入されますが、これらのゼロを取り除くための最良の方法です。

于 2012-04-19T03:58:47.183 に答える