Swift: NSLengthFormatter 只有 1 个小数位
Swift: just 1 fractional digits for NSLengthFormatter
我使用 NSLengthFormatter 来显示正确的实体,例如米、英尺、码等。
该方法有效,但我没有得到正确数量的小数位数。
let distance = getDistanceAsDouble() //636.62084358567 in meters
let format = String(format: "%.1f",distance) //636.6
if let formattedDouble = Double(format) {
let lengthFormatter = NSLengthFormatter()
let formattedDistance = lengthFormatter.stringFromMeters(formattedDouble)
lbl.text = "\(formattedDistance)" // printed: 697.936 yd
}
我用谷歌搜索,但找不到如何配置 NSLengthFormatter。
NSNumberFormatter 具有 numberStyle
或 maximumFractionDigitis
之类的属性,但 NSLengthFormatter 没有……或者?
我试图将 formattedDistance
转换为 Double 以便我可以再次使用 String(format: ""...
。这不起作用,因为 formattedDistance
包含 "yd"(或另一个实体)。
我该如何解决这个问题?
NSLengthFormatter
有一个 属性 numberFormatter: NSNumberFormatter
,所以用它来设置它,就像这样...
if let formattedDouble = Double(format) {
let lengthFormatter = NSLengthFormatter()
lengthFormatter.numberFormatter.maximumFractionDigits = 1 // *****
let formattedDistance = lengthFormatter.stringFromMeters(formattedDouble)
print("\(formattedDistance)")
}
Swift 5.4.2
if let formattedDouble = Double(format) {
let lengthFormatter = LengthFormatter()
lengthFormatter.numberFormatter.maximumFractionDigits = 1 // *****
let formattedDistance = lengthFormatter.string(fromMeters: formattedDouble)
}
我使用 NSLengthFormatter 来显示正确的实体,例如米、英尺、码等。
该方法有效,但我没有得到正确数量的小数位数。
let distance = getDistanceAsDouble() //636.62084358567 in meters
let format = String(format: "%.1f",distance) //636.6
if let formattedDouble = Double(format) {
let lengthFormatter = NSLengthFormatter()
let formattedDistance = lengthFormatter.stringFromMeters(formattedDouble)
lbl.text = "\(formattedDistance)" // printed: 697.936 yd
}
我用谷歌搜索,但找不到如何配置 NSLengthFormatter。
NSNumberFormatter 具有 numberStyle
或 maximumFractionDigitis
之类的属性,但 NSLengthFormatter 没有……或者?
我试图将 formattedDistance
转换为 Double 以便我可以再次使用 String(format: ""...
。这不起作用,因为 formattedDistance
包含 "yd"(或另一个实体)。
我该如何解决这个问题?
NSLengthFormatter
有一个 属性 numberFormatter: NSNumberFormatter
,所以用它来设置它,就像这样...
if let formattedDouble = Double(format) {
let lengthFormatter = NSLengthFormatter()
lengthFormatter.numberFormatter.maximumFractionDigits = 1 // *****
let formattedDistance = lengthFormatter.stringFromMeters(formattedDouble)
print("\(formattedDistance)")
}
Swift 5.4.2
if let formattedDouble = Double(format) {
let lengthFormatter = LengthFormatter()
lengthFormatter.numberFormatter.maximumFractionDigits = 1 // *****
let formattedDistance = lengthFormatter.string(fromMeters: formattedDouble)
}