ios - Swift 扩展和 NumberFormatters 的问题
问题描述
我正在尝试格式化标签的文本字段,使其文本仅打印具有一定数量有效数字的值。我正在使用 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
根据这篇维基百科文章,重要数字是:
- 所有非零数字都很重要:1、2、3、4、5、6、7、8、9。
- 非零数字之间的零很重要:102、2005、50009。
- 前导零从不重要:0.02、001.887、0.000515。
- 在带小数点的数字中,尾随零(最后一个非零数字右侧的零)很重要:2.02000、5.400、57.5400。
- 在没有小数点的数字中,尾随零可能有意义,也可能不重要。需要通过附加图形符号或有关错误的明确信息来获得更多信息,以阐明尾随零的重要性。
推荐阅读
- r - 相对频率条形图不加 1 -- geom_bar
- python - Pandas to_numpy() 产生一个列表数组。如何从中获取 2D numpy 数组?
- c# - 令牌标头中没有“iat”的 AspNetCore JWT 身份验证
- three.js - threejs - 如何将对象相对于鼠标旋转到从当前中心点设置的度数
- azure-devops-server-2019 - Azure Devops Release Server 2019 中的 YAML 模板使用
- arrays - 返回的数组在 Powershell 中有意外的元素
- android-studio - 字符串文字中的拼写错误在 Android Studio 中不起作用
- r - 在R中按某个值获取行
- mysql - 使用游标mysql返回一个值
- vba - 获取错误 3464 条件表达式中的数据类型不匹配