【问题标题】:Int value with a dot minus an Int带点的 Int 值减去 Int
【发布时间】:2017-03-09 23:40:22
【问题描述】:

我想知道是否可以减去两个数字,当一个值在数字末尾包含 (.) 时。

我有这样的价值:

var numberOne: String = "21."
print(Int(numberOne) - 1)

这是不可能的,它不起作用。那我该怎么做呢?

【问题讨论】:

  • debugPrint((Double(numberOne) ?? 0) - 1) 打印你20.0

标签: ios swift string int


【解决方案1】:

其他答案侧重于使用中间浮点转换。另一种方法(假设您想将 String 实例转换为 Int 实例)是分隔字符串的非小数部分并使用它(尝试)初始化一个整数:

import Foundation

var numberOne: String = "21."

if let numberAsInt = Int(numberOne.components(separatedBy: ".").first ?? "x") {
    print(numberAsInt - 1) // 20
}

【讨论】:

    【解决方案2】:
    var numberOne: String = "21."
    print(Int(Double(numberOne)!) - 1)
    

    您不能将带点的字符串转换为 int,但可以将其转换为 Float 或 Double,这些都可以转换为 Int。

    【讨论】:

    • 这是最好的答案。
    • 这个答案与我的答案@DuncanC 有何不同?
    【解决方案3】:

    不,这是不可能的,因为 Int(numberOne) 的转换会因为 . 而失败。

    Double/Float 可以工作:

    var numberOne: String = "21."
    print(Double(numberOne)! - 1) // 20.0
    print(Float(numberOne)! - 1) // 20.0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多