【发布时间】:2017-03-09 23:40:22
【问题描述】:
我想知道是否可以减去两个数字,当一个值在数字末尾包含 (.) 时。
我有这样的价值:
var numberOne: String = "21."
print(Int(numberOne) - 1)
这是不可能的,它不起作用。那我该怎么做呢?
【问题讨论】:
-
debugPrint((Double(numberOne) ?? 0) - 1)打印你20.0。
我想知道是否可以减去两个数字,当一个值在数字末尾包含 (.) 时。
我有这样的价值:
var numberOne: String = "21."
print(Int(numberOne) - 1)
这是不可能的,它不起作用。那我该怎么做呢?
【问题讨论】:
debugPrint((Double(numberOne) ?? 0) - 1) 打印你20.0。
其他答案侧重于使用中间浮点转换。另一种方法(假设您想将 String 实例转换为 Int 实例)是分隔字符串的非小数部分并使用它(尝试)初始化一个整数:
import Foundation
var numberOne: String = "21."
if let numberAsInt = Int(numberOne.components(separatedBy: ".").first ?? "x") {
print(numberAsInt - 1) // 20
}
【讨论】:
var numberOne: String = "21."
print(Int(Double(numberOne)!) - 1)
您不能将带点的字符串转换为 int,但可以将其转换为 Float 或 Double,这些都可以转换为 Int。
【讨论】:
不,这是不可能的,因为 Int(numberOne) 的转换会因为 . 而失败。
Double/Float 可以工作:
var numberOne: String = "21."
print(Double(numberOne)! - 1) // 20.0
print(Float(numberOne)! - 1) // 20.0
【讨论】: