我正在尝试编写一个方法,该方法将检查.0中的“双尾”与“其他”之间的关系。例如,检查它是否是2.0vs 2.12345。
如果它是2.0,那么我希望它只显示2,但如果它是2.12345,那么显示2.12345。
我的想法是编写一个func,它以Double作为参数并返回Int,但是如果输入结果是.12345,它就不能返回它。
所以我想知道我的思维方式是否会通过调整来工作,或者是否有一种类似的方法。
我在想,也许返回类型可能是Int & Double,但我不知道这是怎么回事。
到目前为止,这就是我所拥有的
private func checkIfWholeNumber(displayedDouble: Double) -> Int {
if displayedDouble.truncatingRemainder(dividingBy: 1) == 0 {
return Int(displayedDouble)
} else {
return //
}
}发布于 2017-04-19 07:55:37
将“双”转换为“数字”,如果要在标签上显示,则转换为“字符串”。
let 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发布于 2017-04-19 07:19:43
只需使用rounded函数即可。
func check(val:Double)->Int?{
let rounded = val.rounded()
return rounded == val ? Int(rounded) : nil
}发布于 2020-02-16 00:02:23
Swift 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。
https://stackoverflow.com/questions/43488749
复制相似问题