私はいくつかの数値を計算するアプリケーションを作成しています.いくつかの答えには小数がなく、いくつかはあります。NSNumberFormatter
そこで、小数があるかどうかに応じて数値をフォーマットするために、if-else を作成しました。
そうでない場合、すべてが正常に機能し、数値が正しくフォーマットされ、ラベルが正しく自動縮小されます。ただし、数値に小数がある場合、自動縮小されません。小数がなくなるまで、すべての数値がラベルに入らない場合は、最後の小数を削除します。そしたらうまくいく
たとえば、「123,456,789.123456789」がある場合、ラベルはそのすべてを表示するのに十分な大きさではなく、代わりに「123,456,789.1234」と表示されます。答えが10倍になるようにパラメータを変更すると、答えは「1,234,567,891.234」になります。「1,234,567,891,234」に到達するまで、数値を表示するために自動縮小しません。ただし、数値に小数がない場合は自動縮小され、すべての数値が表示されます。
動作するコードは次のとおりです(小数点がない場合):
NSNumber *input = [NSNumber numberWithDouble: numberDouble];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setGroupingSize:3];
[formatter setGroupingSeparator:@","];
[formatter setUsesGroupingSeparator:YES];
stringWithDecimals = [formatter stringFromNumber:input];
NSMutableString* someString = [NSMutableString stringWithString: stringWithDecimals];
[someString appendString: @" unit"];
stringWithDecimals = someString;
label.text = stringWithDecimals;
動作しないコードは次のとおりです。
NSNumber *input = [NSNumber numberWithDouble: numberDouble];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setGroupingSize:3];
[formatter setGroupingSeparator:@","];
[formatter setUsesGroupingSeparator:YES];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setRoundingMode: NSNumberFormatterRoundHalfUp];
stringWithDecimals = [formatter stringFromNumber:input];
NSMutableString* someString = [NSMutableString stringWithString: stringWithDecimals];
[someString appendString: @" unit"];
stringWithDecimals = someString;
label.text = stringWithDecimals;
変数 "numberDouble" は double です。
だから私がやろうとしているのは、2番目のケースで機能させることです。どうもありがとう!