亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將雙值舍入為x小數位數

將雙值舍入為x小數位數

慕碼人8056858 2019-07-06 15:05:50
將雙值舍入為x小數位數有人能告訴我如何在SWIFT中把一個雙值乘以x小數位數嗎?我有:var totalWorkTimeInHours = (totalWorkTime/60/60)帶著totalWorkTime在第二位成為NSTimeInterval(雙)。totalWorkTimeInHours會給我時間,但它給了我這么長的精確數字,比如1.543240952039.當我打印的時候,我該怎么把這個算到1.543呢?totalWorkTimeInHours?
查看完整描述

3 回答

?
米脂

TA貢獻1836條經驗 獲得超3個贊

你可以用斯威夫特的round功能來完成這一任務。

圍成一圈Double使用3位精度,首先將其乘以1000,再將舍入的結果除以1000:

let x = 1.23556789let y = Double(round(1000*x)/1000)print(y)  // 1.236

除了任何一種printf(...)String(format: ...)解決方案,此操作的結果仍然是類型的。Double.

編輯:
關于有時不起作用的評論,請閱讀以下內容:

關于浮點算法,每個計算機科學家都應該知道些什么?


查看完整回答
反對 回復 2019-07-06
?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

SWIFT 2分機

更通用的解決方案是以下擴展,它適用于SWIFT 2&iOS 9:

extension Double {
    /// Rounds the double to decimal places value    func roundToPlaces(places:Int) -> Double {
        let divisor = pow(10.0, Double(places))
        return round(self * divisor) / divisor    }}


SWIFT 3分機

在SWIFT 3round被替換為rounded:

extension Double {
    /// Rounds the double to decimal places value    func rounded(toPlaces places:Int) -> Double {
        let divisor = pow(10.0, Double(places))
        return (self * divisor).rounded() / divisor    }}


示例,返回雙四舍五入至小數點4位的示例:

let x = Double(0.123456789).roundToPlaces(4)  // x becomes 0.1235 under Swift 2
let x = Double(0.123456789).rounded(toPlaces: 4)  // Swift 3 version


查看完整回答
反對 回復 2019-07-06
?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

我怎樣才能把這個算到,比方說,1.543呢?當我打印 totalWorkTimeInHours?

轉圓totalWorkTimeInHours若要打印到3位數字,請使用String構造函數,該構造函數采用format字符串:

print(String(format: "%.3f", totalWorkTimeInHours))


查看完整回答
反對 回復 2019-07-06
  • 3 回答
  • 0 關注
  • 615 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號