このための API はありますか? または、それを行うためのより良い方法はありますか?
これが私が達成しようとしているものです:
Inは数値文字列です。Outは NSDecimalNumber です
// これは米国向けです:
in: 1 out: 0.01
in: 12 out: 0.12
in: 123 out: 1.12
// ロケールが異なれば、1 のように maximumFractionDigits も異なる場合があります
in: 1 out: 0.1
in: 12 out: 1.2
in: 123 out: 12.3
// 他のロケールでは小数部が 0 桁または 3 桁の場合があります。
これが私がそれを持っている方法です:
// Clear leading zeros
NSNumber *number = [formatter numberFromString:numericString];
numericString = [formatter stringFromNumber:number];
if (maximumFractionDigits == 0) {
return [NSDecimalNumber decimalNumberWithString:numericString];
}
else if (numericString.length <= _currencyFormatter.maximumFractionDigits) {
NSString *zeros = @"";
for (NSInteger i = numericString.length; i < maximumFractionDigits ; i++) {
zeros = [zeros stringByAppendingString:@"0"];
}
return [NSDecimalNumber decimalNumberWithString:[NSString stringWithFormat:@"0.%@%@",zeros,numericString]];
} else {
NSString *decimalString = [NSString stringWithFormat:@"%@.%@",
[_rateInput substringToIndex:numericString.length - maximumFractionDigits],
[_rateInput substringFromIndex:numericString.length - maximumFractionDigits]];
return [NSDecimalNumber decimalNumberWithString: decimalString];
}
これは機能しているように見えますが、このための API があるかどうか、またはより単純でエラーが発生しにくい方法があるかどうか疑問に思っていました。