如何在金额

时间:2017-04-18 12:52:58

标签: objective-c nsnumberformatter

我尝试使用以下值将小数点转换为两位小数。请参阅下面的示例。

    --->1 expected 1.00
    --->1. expected 1.00
    ---->1.0 expected 1.00
    --->1.01 expected 1.01
    --->1235.06 expected 1,235.06
    --->12356.36 expected 12,356.36 
   ---->12356.0 expected 12,356.00
   --->12356. expected 12356.00

我尝试下面的代码,但它不适用于我。请帮助我。

   NSNumberFormatter *doubleValueWithMaxTwoDecimalPlaces = [[NSNumberFormatter alloc] init];

    [doubleValueWithMaxTwoDecimalPlaces setNumberStyle:NSNumberFormatterDecimalStyle];

    [doubleValueWithMaxTwoDecimalPlaces setPaddingPosition:NSNumberFormatterPadAfterSuffix];

    [doubleValueWithMaxTwoDecimalPlaces setFormatWidth:2];

    [doubleValueWithMaxTwoDecimalPlaces setMaximumFractionDigits:2];

    doubleValueWithMaxTwoDecimalPlaces.positiveFormat = @"0.##";

    NSNumber *myValue = [NSNumber numberWithDouble:1.01];

    NSNumber *myValue1 = [NSNumber numberWithDouble:1.0];

    NSNumber *myValue2 = [NSNumber numberWithDouble:1.];

    NSNumber *myValue3 = [NSNumber numberWithDouble:1];

    NSLog(@" [doubleValueWithMaxTwoDecimalPlaces stringFromNumber:myValue] :%@", [doubleValueWithMaxTwoDecimalPlaces stringFromNumber:myValue]);

    NSLog(@" [doubleValueWithMaxTwoDecimalPlaces stringFromNumber:myValue] :%@", [doubleValueWithMaxTwoDecimalPlaces stringFromNumber:myValue1]);

    NSLog(@" [doubleValueWithMaxTwoDecimalPlaces stringFromNumber:myValue] :%@", [doubleValueWithMaxTwoDecimalPlaces stringFromNumber:myValue2]);

    NSLog(@" [doubleValueWithMaxTwoDecimalPlaces stringFromNumber:myValue] :%@", [doubleValueWithMaxTwoDecimalPlaces stringFromNumber:myValue3]);

2 个答案:

答案 0 :(得分:0)

 self.discountPriceLabel.text = [NSString stringWithFormat:@"Rs %.2f",_productDetails.discountprice];

答案 1 :(得分:0)

要确定您需要设置最小小数位以及最大值所需的小数位数 - 请将这两位数设置为2。此外,您需要设置属性以使用千位分隔符,因为这不是NSNumberFormatterDecimalStyle的默认值。使用属性样式设置编写的以下内容应该产生您想要的内容:

doubleValueWithMaxTwoDecimalPlaces.numberStyle = NSNumberFormatterDecimalStyle;
doubleValueWithMaxTwoDecimalPlaces.maximumFractionDigits = 2;
doubleValueWithMaxTwoDecimalPlaces.minimumFractionDigits = 2;
doubleValueWithMaxTwoDecimalPlaces.hasThousandSeparators = YES;

(使用的千位分隔符将是适合当前语言环境的分隔符,如果您总是需要逗号,则也应该设置它。)

HTH