度数值的 NSNumberFormatter
NSNumberFormatter for degrees' values
0°00'00.00"
格式是否有适当的实现?
NSNumberFormatter
仅支持 groupingSeparator
和 decimalSeparator
。
还是不行?
Foundation 中没有度-分-秒格式器,但自己动手并不难。这是我粗略的尝试:
class DegreeFormatter : NumberFormatter {
func string(from degree: Double) -> String {
var remaining = degree
let degree = remaining.rounded(.towardZero)
remaining -= degree
remaining *= 60.0
let minute = remaining.rounded(.towardZero)
remaining -= minute
remaining *= 60
let seconds = remaining
return "\(Int(degree))°\(Int(minute))'\(self.string(from: seconds as NSNumber)!)"
}
}
let formatter = DegreeFormatter()
formatter.maximumFractionDigits = 2
print(formatter.string(from: 1.23456789)) // 1°14'4.44
您可以进一步自定义它以包括自定义度数符号、是否包括秒、允许的单位等。
0°00'00.00"
格式是否有适当的实现?
NSNumberFormatter
仅支持 groupingSeparator
和 decimalSeparator
。
还是不行?
Foundation 中没有度-分-秒格式器,但自己动手并不难。这是我粗略的尝试:
class DegreeFormatter : NumberFormatter {
func string(from degree: Double) -> String {
var remaining = degree
let degree = remaining.rounded(.towardZero)
remaining -= degree
remaining *= 60.0
let minute = remaining.rounded(.towardZero)
remaining -= minute
remaining *= 60
let seconds = remaining
return "\(Int(degree))°\(Int(minute))'\(self.string(from: seconds as NSNumber)!)"
}
}
let formatter = DegreeFormatter()
formatter.maximumFractionDigits = 2
print(formatter.string(from: 1.23456789)) // 1°14'4.44
您可以进一步自定义它以包括自定义度数符号、是否包括秒、允许的单位等。