1

このための 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 があるかどうか、またはより単純でエラーが発生しにくい方法があるかどうか疑問に思っていました。

4

0 に答える 0