diff --git a/Foundation/CPNumberFormatter.j b/Foundation/CPNumberFormatter.j index dc5ba31b1..02072b5ab 100644 --- a/Foundation/CPNumberFormatter.j +++ b/Foundation/CPNumberFormatter.j @@ -59,6 +59,7 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain; CPString _perMillSymbol @accessors(property=perMillSymbol); CPString _groupingSeparator @accessors(property=groupingSeparator); CPNumberFormatterRoundingMode _roundingMode @accessors(property=roundingMode); + CPUInteger _minimumFractionalDigits @accessors(property=minimumFractionalDigits); CPUInteger _maximumFractionalDigits @accessors(property=maximalFractionalDigits); CPDecimalNumberHandler _numberHandler; @@ -95,6 +96,9 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain; preFractionLength = [preFraction length], commaPosition = 3; + while (fraction.length < _minimumFractionalDigits) + fraction += "0"; + // TODO This is just a temporary solution. Should be generalised. // Add in thousands separators. if (_groupingSeparator) @@ -149,6 +153,12 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain; SET_NEEDS_NUMBER_HANDLER_UPDATE(); } +- (void)setMinimumFractionDigits:(CPUInteger)aNumber +{ + _minimumFractionalDigits = aNumber; + SET_NEEDS_NUMBER_HANDLER_UPDATE(); +} + - (void)setMaximumFractionDigits:(CPUInteger)aNumber { _maximumFractionalDigits = aNumber; diff --git a/Tests/Foundation/CPNumberFormatterTest.j b/Tests/Foundation/CPNumberFormatterTest.j index 8cf7cf6a4..0fd6dbccf 100644 --- a/Tests/Foundation/CPNumberFormatterTest.j +++ b/Tests/Foundation/CPNumberFormatterTest.j @@ -78,4 +78,15 @@ [self assert:@"0.4" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"0.4467"]]]; } +- (void)testSetMinimumFractionDigits_ +{ + var numberFormatter = [CPNumberFormatter new]; + [numberFormatter setNumberStyle:CPNumberFormatterDecimalStyle]; + [numberFormatter setMinimumFractionDigits:3]; + [numberFormatter setMaximumFractionDigits:4]; + + [self assert:@"1.000" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"1"]]]; + [self assert:@"1.100" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"1.1"]]]; + [self assert:@"0.4467" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"0.4467"]]]; +} @end