Ios setMaximumFractionDigits的问题

Ios setMaximumFractionDigits的问题,ios,objective-c,nsnumberformatter,fractions,Ios,Objective C,Nsnumberformatter,Fractions,setMaximumFractionDigits无法使用以下代码 NSString *input=@"80.90"; NSNumberFormatter *numberFormatter=[[NSNumberFormatter alloc] init]; [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; [numberFormatter setMaximumFractionDigits:2]; NSNumber *nu

setMaximumFractionDigits无法使用以下代码

NSString *input=@"80.90";
NSNumberFormatter *numberFormatter=[[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setMaximumFractionDigits:2];
NSNumber *number=[numberFormatter numberFromString:input];
数字转换为80.9000000000001。但是我把小数点后两位限制了。
那么,如何将数字设置为80.90,而不是用于格式化数字的80.9000000000001

setMaximumFractionDigits
setMinimumFractionDigits
。或者换句话说,它是在将数字转换为字符串时应用的,即
stringFromNumber
。因此,当您使用
numberFromString

时,它不会被应用,因为@SunilPandey提到了
-setMaximumFractionDigits
用于格式化数字。所以你可以这样做:

float input = 80.99999;
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setRoundingMode: NSNumberFormatterRoundDown];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setMaximumFractionDigits:2];

NSString *numberString = [numberFormatter stringFromNumber:[NSNumber numberWithFloat:input]];
[formatter release];

NSLog(@"NumberString: %@", numberString);
输出:


NumberString:80.99

我能够将数字转换为字符串并遵守maximumFractionDigits属性的唯一方法是执行以下操作:[formatter stringFromNumber:[formatter numberFromString:@“$45.321”];这将返回“$45.32”,假设格式化程序是最大分数位数设置为2的货币格式化程序。@Darraski什么不起作用?将此代码复制粘贴到您的项目并签出控制台。。你会得到80分,99@JustinBoo对不起,我没说清楚。问题是如何将字符串转换为数字。您的回答证明了setMaximumFractionDigits在以另一种方式转换时有效。这根本没有什么帮助,而且可能会让人困惑。