Swift扩展和NumberFormatters的问题

问题描述 投票:-2回答:1

我正在尝试格式化标签的文本字段,使其文本只打印具有一定数量有效数字的值。我正在使用Swift和NumberFormatter类的扩展功能,但是,虽然代码正确地符合没有错误,但我想要的功能(即最多6个有效数字)没有实现。

这是我的扩展代码:

extension Double {
    func formatNumbers() -> String {
        let numberFormat = NumberFormatter()
        let number = NSNumber(value: self)
        numberFormat.usesSignificantDigits = true
        numberFormat.minimumFractionDigits = 0
        return String(numberFormat.string(from: number) ?? "")
    }

}

这是我调用扩展方法的时候:

ConsoleValue.text! = "\(tempResult.formatNumbers())"

其中ConsoleValue是UILabel,tempResult是Double var。

有人可以帮我解决我做错的事吗?

ios swift numbers formatter
1个回答
0
投票

要设置最大有效位数,请使用maximumSignificantDigits属性:

numberFormat.maximumSignificantDigits = 6

根据这个维基百科article,有意义的数字是:

  • 所有非零数字都是重要的:1,2,3,4,5,6,7,8,9。
  • 非零数字之间的零是重要的:102,2005,50009。
  • 前导零从不重要:0.02,001.887,0.000515。
  • 在带小数点的数字中,尾随零(最后一个非零数字右侧的值)是显着的:2.02000,5.400,57.5400。
  • 在没有小数点的数字中,尾随零可能有效,也可能不重要。需要通过其他图形符号或有关错误的显式信息提供更多信息,以阐明尾随零的重要性。
© www.soinside.com 2019 - 2024. All rights reserved.