NSNumberFormatter IOS计算器显示

时间:2013-08-02 20:29:05

标签: ios calculator nsnumberformatter

请有人帮助我。我正在制作计算器应用程序,我使用了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];

2 个答案:

答案 0 :(得分:0)

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

NSString *numbLong = @"123023.123781237912378123"; // get this from your number formatter
NSString *numbTruncated = [numbLong substringToIndex:10]; // 123023.123

答案 1 :(得分: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];