我正在制作一个计算一些数字的应用程序,有些答案没有小数点,有些有。NSNumberFormatter
所以我做了一个 if-else,根据它们是否有小数来格式化数字。
如果没有,一切正常,数字格式正确,标签自动收缩正确。但是,当数字有小数时,它不会自动收缩。如果所有数字都不会进入标签,它将删除最后一个小数,直到没有小数。然后它会正常工作
例如,如果我有“123,456,789.123456789”,标签将不足以显示所有内容,而是显示“123,456,789.1234”。如果我更改参数,那么答案将是 10 倍,答案将是“1,234,567,891.234”。现在直到我到达“1,234,567,891,234”,它不会自动收缩让我看到数字。但是,当数字没有小数时,它会自动收缩,我会看到所有的数字。
这是有效的代码(当没有小数时):
NSNumber *input = [NSNumber numberWithDouble: numberDouble];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setGroupingSize:3];
[formatter setGroupingSeparator:@","];
[formatter setUsesGroupingSeparator:YES];
stringWithDecimals = [formatter stringFromNumber:input];
NSMutableString* someString = [NSMutableString stringWithString: stringWithDecimals];
[someString appendString: @" unit"];
stringWithDecimals = someString;
label.text = stringWithDecimals;
这是不起作用的代码:
NSNumber *input = [NSNumber numberWithDouble: numberDouble];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setGroupingSize:3];
[formatter setGroupingSeparator:@","];
[formatter setUsesGroupingSeparator:YES];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setRoundingMode: NSNumberFormatterRoundHalfUp];
stringWithDecimals = [formatter stringFromNumber:input];
NSMutableString* someString = [NSMutableString stringWithString: stringWithDecimals];
[someString appendString: @" unit"];
stringWithDecimals = someString;
label.text = stringWithDecimals;
变量“numberDouble”是一个双精度数。
所以我想做的是让它适用于第二种情况。非常感谢!