2016-10-27 60 views
1

我想聽聽是否可以減去兩個數字,當一個值在數字結尾處包含(。)時。帶點的Int值減去一個Int

我有這樣一個值:

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

那是不可能的,這是行不通的。那我該怎麼做?

+0

'debugPrint((雙人間(的Numberone )?? 0) - 1)'打印你'20.0'。 – holex

回答

1

不,這是不可能的,因爲由於.轉換爲Int(numberOne)將失敗。

Double/Float將工作:

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

你不能用一個點字符串轉換爲一個int,但你可以將它轉換爲浮動或雙,並且這些可以被轉換成int類型。

+0

這是最好的答案。 –

+0

這個答案與我的回答@DuncanC有何不同? –

0

其他答案專注於使用中間浮點轉換。另一種(給你希望你的String實例轉換爲一個Int實例)是分離字符串的非小數部分,並用它(試圖)初始化一個整數

import Foundation 

var numberOne: String = "21." 

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