Swift中如何实现数值四舍五入并保留两位小数?
Swift代码计算结果四舍五入保留2位小数解决方案
首先你当前的代码存在计算公式笔误:totalMoney 赋值语句中卢比对应的计算项写为了 rupeeRate*rupeeRate,实际应为 rupeeRate * rupee,修正后再按以下两种方案实现保留两位小数的需求即可:
方案1:对计算结果做舍入后存储(适用于后续需要使用舍入值计算的场景)
通过扩展 Double 类型实现通用的保留指定位数小数的方法,直接对计算结果做四舍五入:
import Foundation var yen: Double = 10 var krona: Double = 10 var rupee: Double = 10 var totalMoney: Double var yenRate = 0.0088 var kronaRate = 0.116 var rupeeRate = 0.013 // 修正计算公式 totalMoney = yenRate * yen + kronaRate * krona + rupeeRate * rupee // 四舍五入保留2位小数 let roundedTotal = totalMoney.rounded(toPlaces: 2) print("The total of all currencies is equal to \(roundedTotal) in USD.") // 扩展Double实现通用的保留指定位数小数方法 extension Double { func rounded(toPlaces places: Int) -> Double { let divisor = pow(10.0, Double(places)) return (self * divisor).rounded() / divisor } }
运行后输出的舍入结果为1.38。
方案2:输出时直接格式化(适用于仅需要展示两位小数的场景)
不需要修改计算逻辑,直接在字符串输出时指定格式即可,代码更简洁:
import Foundation var yen: Double = 10 var krona: Double = 10 var rupee: Double = 10 var totalMoney: Double var yenRate = 0.0088 var kronaRate = 0.116 var rupeeRate = 0.013 totalMoney = yenRate * yen + kronaRate * krona + rupeeRate * rupee // 格式化输出保留2位小数 print(String(format: "The total of all currencies is equal to %.2f in USD.", totalMoney))
运行后输出内容为 The total of all currencies is equal to 1.38 in USD.。
内容的提问来源于stack exchange,提问作者Marni Velick
相关产品推荐
相关产品推荐

