将ObjC NSNumber代码迁移到Swift并且显示数字时出现问题。

时间:2015-11-13 14:18:31

标签: ios swift

我正在将我的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似乎给了我整数的小数。

2 个答案:

答案 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!)
}

enter image description here