基本iOS十进制微调
我有浮点值1.96,然后我想把1.9显示为字符串,如果我使用字符串(格式:“%.1f”),结果是2.0,我也尝试使用NumberFormatter作为扩展名基本iOS十进制微调,ios,swift,Ios,Swift,我有浮点值1.96,然后我想把1.9显示为字符串,如果我使用字符串(格式:“%.1f”),结果是2.0,我也尝试使用NumberFormatter作为扩展名 let formatter = NumberFormatter() formatter.numberStyle = .decimal formatter.maximumFractionDigits = 1 formatter.minimumFractionDigits = 1 return form
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 1
formatter.minimumFractionDigits = 1
return formatter.string(for: self)!
但结果仍然是2.0
有什么最好的方法可以达到1.96到1.9的水平吗?老把戏:
var yourResult = Double(floor(10*yourDecimalDigit)/10)
// yourResult = 1.9
像这样转换成字符串
var string = String(yourResult)
老把戏:
var yourResult = Double(floor(10*yourDecimalDigit)/10)
// yourResult = 1.9
像这样转换成字符串
var string = String(yourResult)
可以使用Double的常规扩展来截断Double值 Swift 4.0
extension Double {
func truncate(places : Int)-> Double {
return Double(floor(pow(10.0, Double(places)) * self)/pow(10.0, Double(places)))
}
}
像下面这样使用它
let trimedValue = 1.96.truncate(places: 1) // 1.9
可以使用Double的常规扩展来截断Double值 Swift 4.0
extension Double {
func truncate(places : Int)-> Double {
return Double(floor(pow(10.0, Double(places)) * self)/pow(10.0, Double(places)))
}
}
像下面这样使用它
let trimedValue = 1.96.truncate(places: 1) // 1.9
也许有方法可以帮助你,但我喜欢自己做 分机:
extension CGFloat{
var onlyOneDigits : String {
var str = "\(self)"
let count = str.count
if self >= 1000 && self < 10000{
str.removeLast(count - 6)
return str
}else if self >= 100{
str.removeLast(count - 5)
return str
}else if self >= 10{
str.removeLast(count - 4)
return str
}else{
str.removeLast(count - 3)
return str
}
}
}
也许有方法可以帮助你,但我喜欢自己做 分机:
extension CGFloat{
var onlyOneDigits : String {
var str = "\(self)"
let count = str.count
if self >= 1000 && self < 10000{
str.removeLast(count - 6)
return str
}else if self >= 100{
str.removeLast(count - 5)
return str
}else if self >= 10{
str.removeLast(count - 4)
return str
}else{
str.removeLast(count - 3)
return str
}
}
}
如果您想要截断,您可能需要做比四舍五入近似更多的工作,而这正是大多数人所期望的。1.96四舍五入到2.0。在数字格式化程序上设置四舍五入方法。如果要进行截断,则可能需要比四舍五入近似做更多的工作,而这正是大多数人所期望的。1.96四舍五入到2.0。在数字格式化程序上设置四舍五入方法。