如果它是Swift中的整数,则将Double显示为Int

时间:2017-04-19 07:05:26

标签: swift

我正在尝试编写一个方法来检查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 //
    }
  }

3 个答案:

答案 0 :(得分:2)

如果你想在标签

上显示,请将Double转换为Number然后转换为String
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

答案 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。