2

NSNumberFormatter用来格式化一个NSDecimalNumber.

我可以使用什么配置将数字显示0.0126761

重要提示:我不想四舍五入到 1.0 — 我想四舍五入到小数点的百位,然后去掉前面的零和小数点分隔符。


我当前的配置如下所示:

// in a method...

NSDecimalNumber *value = /* retrieve a value like 0.012676 */;
NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];

// this is the rounding behavior I want
[nf setRoundingMode: NSNumberFormatterRoundHalfEven];

[nf setMinimumFractionDigits: 2];
[nf setMaximumFractionDigits: 2];

return [nf stringFromNumber: value];

生成以下输出:

.01


多亏了 dasblinkenlight 和 Twitter 朋友,解决方案是简单地乘以100,然后消除小数位数:

[nf setMultiplier: [NSNumber numberWithInt: 100]];
[nf setMinimumFractionDigits: 0];
[nf setMaximumFractionDigits: 0];
4

1 回答 1

2

N您可以通过乘以N10 的 -th 次方来消除前导零。由于您正在寻找第 100 位,因此乘以0.012676并将100其转换为整数。

于 2012-07-17T14:25:07.227 回答