例如:
1000 = 1k1100 = 1.1k15000 = 15k115000 = 115k1000000 = 1m
这是我到目前为止的地方:
func formatPoints(num: Int) -> String { let newNum = String(num / 1000) var newNumString = "\(num)" if num > 1000 && num < 1000000 { newNumString = "\(newNum)k" } else if num > 1000000 { newNumString = "\(newNum)m" } return newNumString}formatPoints(51100) // THIS RETURNS 51K instead of 51.1K
如何让这个功能起作用,我缺少什么?
解决方法func formatPoints(num: Double) ->String{ let thousandNum = num/1000 let millionNum = num/1000000 if num >= 1000 && num < 1000000{ if(floor(thousandNum) == thousandNum){ return("\(Int(thousandNum))k") } return("\(thousandNum.roundtoplaces(1))k") } if num > 1000000{ if(floor(millionNum) == millionNum){ return("\(Int(thousandNum))k") } return ("\(millionNum.roundtoplaces(1))M") } else{ if(floor(num) == num){ return ("\(Int(num))") } return ("\(num)") }}extension Double { /// Rounds the double to decimal places value func roundtoplaces(places:Int) -> Double { let divisor = pow(10.0,Double(places)) return round(self * divisor) / divisor }}
如果数字是完整的,更新的代码现在应该不返回.0.现在应该输出1k而不是1.0k.我只是检查了双倍和它的地板是否相同.
我在这个问题中找到了双重扩展:
Rounding a double value to x number of decimal places in swift
以上是内存溢出为你收集整理的ios – Swift 2.0将1000格式化为友好的K.全部内容,希望文章能够帮你解决ios – Swift 2.0将1000格式化为友好的K.所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)