将NSNumber舍入为特定的有效位数

时间:2017-08-15 20:51:12

标签: objective-c nsnumber

我们说我有一个NSNumber对象,其值为0.12345。我想要的只是一个具有相同值的NSNumber对象,但四舍五入到指定的有效位数,例如2,因此值如下所示:0.12

有一种明显的方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

几乎不可能做到并保持所有约束。 NSNumber没有舍入方法,因此您将不得不转换为其他内容。显而易见的路线是转换为双倍乘法,舍入和除法,但你说你宁愿不这样做。离开这条路线:

NSNumber *round(NSNumber *number, NSInteger places, NSRoundingMode mode) {
    NSDecimal d = number.decimalValue;
    NSDecimal rd;
    NSDecimalRound(&rd, &d, places, mode);
    return [NSDecimalNumber decimalNumberWithDecimal:rd];
}

答案 1 :(得分:-1)

另一种愚蠢的方式是:

  1. 将您的数字乘以100后将其转换为圆形。
  2. int yourNum = 0.12345 * 100; yourNum现在是12。

    1. 然后,只要你需要数字除以100。
    2. 浮动yourNumF = yourNum / 100.0;

      我自己并不喜欢这种方法,但它符合您的要求。 :d