Iphone 在NSNumberFormatter中禁用取整(使用区域设置)

Iphone 在NSNumberFormatter中禁用取整(使用区域设置),iphone,objective-c,nsnumberformatter,Iphone,Objective C,Nsnumberformatter,我正在使用几个区域设置编号。例如: 1.234.567,89-德语 1'234'567.89-瑞士 1234567.89-美国 我的代码将小数点分隔符后的最后一位四舍五入: NSNumberFormatter *formatter = [[[NSNumberFormatter alloc] init] autorelease]; [formatter setNumberStyle:NSNumberFormatterDecimalStyle]; [formatter setLocale:[NSLo

我正在使用几个区域设置编号。例如:

  • 1.234.567,89-德语
  • 1'234'567.89-瑞士
  • 1234567.89-美国
  • 我的代码将小数点分隔符后的最后一位四舍五入:

    NSNumberFormatter *formatter = [[[NSNumberFormatter alloc] init] autorelease];
    [formatter setNumberStyle:NSNumberFormatterDecimalStyle];
    [formatter setLocale:[NSLocale currentLocale]];
    [formatter setMinimumFractionDigits:2];
    [formatter setMaximumFractionDigits:2];
    
    double myValue = [[formatter numberFromString:@"123.458"] doubleValue];
    double myValue2 = [[formatter numberFromString:@"123.444"] doubleValue];
    
    NSString *rezult = [formatter stringFromNumber:[NSNumber numberWithDouble:myValue]];
    NSString *rezult2 = [formatter stringFromNumber:[NSNumber numberWithDouble:myValue2]];
    
    NSLog(@"rezult = %@", rezult);  //gives 123.46 - incorrect
    NSLog(@"rezult2 = %@", rezult2);//gives 123.44 - correct
    
    请建议如何防止四舍五入

    请记住,我不能这样做:

    double aDouble = 1234.56789;
    NSString *stri = [NSString stringWithFormat:@"%.2f", aDouble];
    NSLog(@"%@", stri); //result is 1234.56 - correct (not rounded up to 1234.57)
    
    …因为我必须使用*格式化程序设置*stri(见上文)

    我想
    NSNumberFormatter
    一定有一些额外的设置,不是吗

    提前谢谢

    编辑1

    解决方案:在声明NSNumberFormatter后,还要说:

    [formatter setRoundingMode: NSNumberFormatterRoundDown];
    
    感谢@Price提供的快速解决方案。主题已关闭。

    您可以添加以下内容:

    [formatter setRoundingMode: NSNumberFormatterRoundDown];
    

    重复:不重复,那个家伙不使用区域号码。在你的代码中没有地方使用本地号码。当您不在内部打印它时,它是四舍五入的。像他们说的那样使用NSDecimalNumber。我使用locale:[formatter setLocale:[NSLocale currentLocale]];“复制品”也没用