2017-09-25 81 views
1

我想只顯示一個數的小數部分雙小數部分,但它使打印數小數點:只顯示小數點

對數223.50:

changeAmountLabel.text = "\(balance.truncatingRemainder(dividingBy: 1))" 

這將打印.5,但需要打印的是50,有沒有辦法做到這一點?

+0

它小數點前轉換爲字符串,並刪除部分。這是做到這一點的唯一方法。 – Sulthan

+0

@Sulthan你會怎麼做,沒有小數點? – SwiftyJD

+0

@SwiftyJD以'.'分隔並以結尾 – TNguyen

回答

0

您可以通過使用NumberFormatter做到這一點。

試試這個:

let formatter = NumberFormatter() 
formatter.locale = Locale(identifier: "en_US_POSIX") 
formatter.minimumFractionDigits = 2 
formatter.maximumFractionDigits = 3 


let number = 223.50 
if let str = formatter.string(from: NSNumber(value: number)) as? String { 
    if let range = str.range(of: ".") { 
     let value = str.substring(from: range.upperBound) 
     print(value) // 50 
    } 
} 

更新斯威夫特4:

if let str = formatter.string(for: number) { 
    if let range = str.range(of: ".") { 
     let value = str[range.upperBound...] 
     print(value) // 50 
    } 
} 
+0

kkkk我贏了3秒 –

+0

請注意,如果您未指定區域設置「。」。可能是數千個分組分隔符 –

+1

您必須爲格式化程序設置區域設置或使用當前語言環境中的小數點分隔符。 – Sulthan

0

你只需要地面您的餘額,並從中減去的結果,接下來再乘以100,就在那之後,可以根據需要格式化結果:

let balance = 223.50 
let cents = (balance - floor(balance)) * 100 
let formatted = String(format: "%.0f", cents) // "50"