在 SwiftUI 中,.percent 格式化器用于显示数值作为百分比。然而,默认情况下,它可能显示多位小数,例如 0.12345 会格式化为 12.345%。
Text(accessProgress,format: .percent)
如果希望限制显示的小数位数,可以通过以下方法自定义百分比格式。
解决方法
1、使用 .formatted() 自定义小数位数
通过 .formatted() 方法指定小数位数:
let accessProgress = 0.12345 // 示例值
Text(accessProgress.formatted(.percent.precision(.fractionLength(0...2))))
解释:
.fractionLength(0…2) 表示小数位数在 0 到 2 位之间。
.fractionLength(0) 表示不显示小数。
.fractionLength(2) 表示显示 2 位小数。
.fractionLength(1…2) 表示显示 1 到 2 位小数。
2、使用 .NumberFormatter 进行更复杂的格式化
如果需要更精确的控制,可以使用 NumberFormatter:
import Foundation
let formatter: NumberFormatter = {
let formatter = NumberFormatter()
formatter.numberStyle = .percent
formatter.minimumFractionDigits = 0
formatter.maximumFractionDigits = 2
return formatter
}()
let accessProgress = 0.12345
Text(formatter.string(from: NSNumber(value: accessProgress)) ?? "")
3、直接在 Text 显示简化格式
通过简单的字符串格式化:
let accessProgress = 0.12345
Text("\((accessProgress * 100).formatted(.number.precision(.fractionLength(2))))%")
推荐方式
使用方法 1 是最简单和现代的方式,特别是当使用 SwiftUI 的 Text 时:
Text(accessProgress.formatted(.percent.precision(.fractionLength(2))))
这可以直接完成所需的百分比格式化并且代码清晰。