NSNumberFormatter类未四舍五入为正确的值

时间:2018-11-28 12:20:11

标签: nsstring rounding nsnumber nsnumberformatter

我正在使用NSNumberFormatter类将十进制数舍入为2位数字,并在舍入时选择较高的数字。

NSString *value = @"1054.705";
NSNumberFormatter *valueDouble = [[NSNumberFormatter alloc] init];
valueDouble.roundingMode = NSNumberFormatterRoundCeiling;
[valueDouble setMaximumFractionDigits:2];
NSNumber *myNumber = [valueDouble numberFromString:value];

Desired Output : 1054.71
Output Coming : 1054.705

因此,在这种情况下,最后一轮数字为0.705时应始终为0.71。

1 个答案:

答案 0 :(得分:0)

您可以使用这种方法处理此类情况-检查第二个(或任何其他)分数位数是否为零,然后将其除以小数位数

if ((NSInteger)(myNumber.doubleValue * 100) % 10 == 0) {
    myNumber = @(ceil(myNumber.doubleValue * 100) / 100);
}