gpt4 book ai didi

ios - NSNumberFormatter positiveFormat

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:33:34 25 4
gpt4 key购买 nike

我需要使用 NSNumberFormatter 格式化小数。结果需要如下所示

7 => 7

7.1 => 7.10

因此,如果数字有小数部分,则显示为 2 位小数。

我试过 maximumFractionDigits = 2 和 positiveFormat = @"###0.00"但它没有给出我期待的结果

7 => 7.00

7.1 => 7.10

实现我的结果的最佳 positiveFormat 是什么?

这是我正在使用的代码

NSNumberFormatter *numberFormatter = [NSNumberFormatter new];
numberFormatter.minimumFractionDigits = 0;
numberFormatter.maximumFractionDigits = 2;
numberFormatter.positiveFormat = @"###0.00";

我的解决方案

if ([number doubleValue] == [number integerValue]) {
// use formatter with minimumFractionDigits = 0 and maximumFractionDigits = 0
} else {
// use formatter with minimumFractionDigits = 2 and maximumFractionDigits = 2
}

最佳答案

无法通过设置 NSNumberFormatter 的属性来实现。您可以通过两种方式实现这一目标:

第一种方式:

子类 NSNumberFormatter 并实现它的 stringFromNumber: 方法(或您用于格式化的任何相关方法。然后您手动设置 minimumFractionDigitsmaximumFractionDigits 在格式化之前,像这样(伪代码)在 stringFromNumber 覆盖中,“numberHasDecimalFraction”是你必须实现的 bool 条件:

if(numberHasDecimalFraction){
self.minimumFractionDigits = 2;
self.maximumFractionDigits = 2;
}else{
self.minimumFractionDigits = 0;
self.maximumFractionDigits = 0;
}

return [super stringFromNumber: number];

第二种方式:

围绕两个格式化程序创建一个包装器,并使用它来格式化回退到其中一个的格式,具体取决于具有与第一种方式相似的小数位的条件。

关于ios - NSNumberFormatter positiveFormat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43114017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com