0

请有人,帮助我。我正在制作计算器应用程序,并且我使用了 NSNumberFormatter 。我想设置在我的 UILabel 上显示的数字的限制,例如,最多 12 位,但这意味着,任何数字,即使是“1234121.38685 (12)”。因此,如果我将这个数字相乘,它正在增加,并且必须正确舍入,并且我希望它是例如“9785123124.12”,如果再次,则为“75647689751.5”。因此结果值显示整数部分的最大值,而不是浮点数。怎么做?

numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setGroupingSeparator:@" "];
[numberFormatter setGroupingSize:3];
[numberFormatter setUsesGroupingSeparator:YES];
[numberFormatter setDecimalSeparator:@"."];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setMaximumFractionDigits:10];
[numberFormatter setRoundingMode:NSNumberFormatterRoundUp];
[numberFormatter setMaximumIntegerDigits:10];
4

2 回答 2

0

一种是使用您设置的数字格式化程序将数字转换为 NSString。确保总位数超过 10。然后使用字符串类截断数字。

NSString *numbLong = @"123023.123781237912378123"; // get this from your number formatter
NSString *numbTruncated = [numbLong substringToIndex:10]; // 123023.123
于 2013-08-02T21:59:39.883 回答
0

@Adam Behringer,使用此代码获得正确的 RoundMode 会更好!

result=[[self math] calculations]; 
resultString=[NSString stringWithFormat:@"%.16f", result];
 getIntPartOfValue=result; 
stringForGetIntPartOfValue=[NSString stringWithFormat:@"%lld",getIntPartOfValue];
[numberFormatter setMaximumFractionDigits:(maximumAmountOfDigits stringForGetIntPartOfValue.length)+1]; 
于 2013-08-21T18:16:40.957 回答