不正确的十进制格式NSNumberFormatter

时间:2015-06-11 23:39:45

标签: ios nsnumberformatter

我有一个只包含数字的文本字段。我需要数字遵守最多3个有效数字和最多2个小数位。我还需要保留原始值,并且只想更改值的显示方式。我暂时通过在小数点处分割数字并删除超过2位小数来暂时解决问题但我希望使用NSNumberFormatter并删除该代码。这就是我想要做的事情:

NSNumber *customCalculation = @(0.04791234);

NSNumberFormatter *formatter = [[NSNumberFormatter alloc]init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setUsesSignificantDigits:YES];
[formatter setMaximumSignificantDigits:3];
[formatter setMaximumFractionDigits:2];

customTextField.text = [formatter stringFromNumber: customCalculation];

输出为:0.0479。不知道我在哪里弄错了。

1 个答案:

答案 0 :(得分:1)

您已指示格式化程序显示,

0.0479有3位有效数字。有效数字是前导零后的数字。

NSNumberFormatter *formatter = [[NSNumberFormatter alloc]init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:2];

那会给0.05。要将0.04作为输出,您还需要更改舍入行为(因为0.04791234应该是0.05,精度为2dp。)

NSNumberFormatter *formatter = [[NSNumberFormatter alloc]init];
[formatter setRoundingMode:NSNumberFormatterRoundDown];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:2];

收益率0.04