objective-c - Objective-C 中按位数智能舍入

标签 objective-c nsnumberformatter rounding

嗨,我想对 float 进行智能舍入,以保持位数不变。 该数字始终包含 1 或 2 个整数位 + 未定义的小数位。

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

例如:

83.235 = 83.2
0.110321 = 0.11
4.56723 = 4.57

最佳答案

如果前导零不算数字

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

如果您希望前导零算作数字

我不知道有任何内置的方法来处理这个问题,但是您可以编写一些自定义逻辑来做到这一点。例如

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

这是假设数字始终在 0 到 99 之间。无论如何,因此,如果您对数据完整性没有 100% 的信心,您可能需要进行更多检查。

关于objective-c - Objective-C 中按位数智能舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48999544/

相关文章:

objective-c - OS X 上的 CATiledLayers

iOS - 为自定义键盘播放 Tock 声音

ios - 格式化轴标签核心图的长数字

objective-c - NSNumber stringValue 不同于 NSNumber 值

javascript - 点后如何在 javascript 无限数字中做四舍五入?

ios - 如何制作这样的分段控件

iphone - 如何格式化数字以使其始终有一个小数位?

python - Decimal.quantize 舍入误差

java - 考虑最接近的十分之一将华氏度计算为摄氏度

iphone - 如何将 x 个 UIImages 连接在一起?