按 Objective-C 中的位数智能舍入

Smart rounding by number of digits in Objective-C

您好,我想对浮点数进行智能舍入,以保持位数不变。 此数字将始终包含 1 或 2 个整数数字 + 未定义的十进制数字。

我想要一个无论位置如何都始终为 3 位数字的号码

EX:

83.235 = 83.2
0.110321 = 0.11
4.56723 = 4.57

如果前导零不算数字

NSNumberFormatter 具有 usesSignificantDigits, minimumSignificantDigits, and maximumSignificantDigits 属性,可以满足您的需要。将这两个值都设置为 3,或者如果您不想在小数位较少的值上添加尾随零,则只设置最大值。

如果您希望将前导零计为数字

我不知道有任何 built-in 处理此问题的方法,但您可以编写一些自定义逻辑来执行此操作。例如

if (yourNum < 10)
    formattedNum = [NSString stringWithFormat:@"%.2f", yourNum];
else
    formattedNum = [NSString stringWithFormat:@"%.1f", yourNum];

这是假设数字始终介于 0 和 99.whatever 之间,因此如果您对数据完整性不是 100% 有信心,您可能需要进行更多检查。