我正在尝试格式化标签的文本字段,使其文本只打印具有一定数量有效数字的值。我正在使用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。
有人可以帮我解决我做错的事吗?
要设置最大有效位数,请使用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。
- 在没有小数点的数字中,尾随零可能有效,也可能不重要。需要通过其他图形符号或有关错误的显式信息提供更多信息,以阐明尾随零的重要性。