我正在将我的ObjC应用程序迁移到Swift并遇到了一个特殊的问题。
我的应用程序读取JSON文件并从中构建模型。从JSON读取的数字曾经被分配给NSNumber。有些数字是完整的(例如60)其他数字是小数部分(例如60.23)。
当我在我的应用程序中显示这些数字时,60将是60(而不是60.0)并且小数位将适当显示。
现在我正在编写Swift代码并将从JSON读取的数字分配给Double。即使我使用let x = String(myDouble),数字60总是会出现60.0
我不想要这个......但是我不能将它格式化为%f因为我不知道这个数字是完整的还是有一个小数部分。
我真的需要检查它是否是一个整体,然后使用%f?
格式化它我在Swift中遗漏了什么? ObjC代码表现得像我现在想的那样Swift似乎给了我整数的小数。
答案 0 :(得分:4)
您可以使用NSNumberFormatter
。
let number1 : Double = 60
let number2 = 60.23
let numberFormatter = NSNumberFormatter()
numberFormatter.numberStyle = .DecimalStyle
let number1String = numberFormatter.stringFromNumber(number1) // "60"
let number2String = numberFormatter.stringFromNumber(number2) // "60.23"
答案 1 :(得分:1)
仅供参考,这是PlayGround中的代码:
let number = 60.23
String(number)
let double:Double = 60
//First way
String(NSNumberFormatter().stringFromNumber(double)!)
//Second way
let doubleString = String(double)
if doubleString.containsString(".0") {
let length = doubleString.characters.count
let index = doubleString.characters.indexOf(".")
doubleString.substringToIndex(index!)
}