不正确的十进制格式 NSNumberFormatter

Incorrect Decimal Formatting 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。不确定我在哪里犯了错误。

0.0479 有 3 位有效数字,因为您已指示格式化程序显示。有效数字是前导零之后的数字。

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

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

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

产量 0.04