我正在尝试编写一个方法来检查Double是否以.0与其他任何内容结束。例如,检查它是否为2.0 vs 2.12345。
如果是2.0,那么我希望它只显示2,但如果是2.12345则显示2.12345。
我有一个写一个函数的想法,该函数将Double作为参数并返回一个Int,但如果输入结果为.12345则无法返回。
所以我想知道我的思维方式是否适用于调整或是否有类似的方法。
我在想,也许返回类型可能是Int&加倍,但我不知道那会怎样。
这是我到目前为止所拥有的
private func checkIfWholeNumber(displayedDouble: Double) -> Int {
if displayedDouble.truncatingRemainder(dividingBy: 1) == 0 {
return Int(displayedDouble)
} else {
return //
}
}
答案 0 :(得分:2)
如果你想在标签
上显示,请将Double转换为Number然后转换为Stringlet i = 1.0
let j = 1.2345
// Value in String
let a = NSNumber(value: j).stringValue // "1.2345"
let b = NSNumber(value: i).stringValue // "1"
// Value in Double
let c = NSNumber(value: i).doubleValue // 1.0
let d = NSNumber(value: j).doubleValue // 1.2345
答案 1 :(得分:1)
只需使用rounded
功能。
func check(val:Double)->Int?{
let rounded = val.rounded()
return rounded == val ? Int(rounded) : nil
}
答案 2 :(得分:0)
快速4 +
let i = 2.0
let j = 2.12345
let nf = NumberFormatter()
nf.maximumFractionDigits = 6
let a = nf.string(for: i) ?? "" // 2
let b = nf.string(for: j) ?? "" // 2.12345
对于另一个选项,本示例使用NumberFormatter()。我只是主观地将最大位数设置为6。