swift - 四舍五入到两位小数

标签 swift

<分区>

我编写了一个简单的 swift 程序来显示运行电子设备的成本。该程序运行良好(有点笨拙 - 我是 swift 的新手!)但结果在小数点后显示了几个数字,所以我试图将它四舍五入到小数点后两位。我运气不好!我的代码是:

var pricePerkWh: Double = 13.426
var watts: Double = 5.0
var hours: Double = 730.0
var KW: Double = watts/1000
var kWh: Double = KW*hours
var penceMonth: Double = kWh*pricePerkWh
var poundMonth:Double = penceMonth/100
var cost = poundMonth.roundTo(places: 2)


print ("It will cost £\(cost) per month") 

从我读到的here ,使用了 roundTo(places: 2) 但这导致了错误

error: Power Costs.playground:6:12: error: value of type 'Double' has no member 'roundTo'
var cost = poundMonth.roundTo(places: 2)

如有任何指点,我们将不胜感激!

谢谢

最佳答案

Double 确实没有方法 roundTo(places:)。这是您首先必须自己实现的方法。 为此,请参阅 this answer ,例如。

或者,如果您不想创建一个单独的方法,您可以直接这样做(受上述答案的启发):

let cost = (poundMonth * 100).rounded() / 100

但是: 如果您不需要任何进一步计算的四舍五入值,但想将其显示给用户,NumberFormatter 是最佳选择。例如,它还提供本地化服务。参见 this answer .

关于swift - 四舍五入到两位小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46507341/

相关文章:

Swift 3 在解包 Optional 值时意外发现 nil

ios - 使用 UITextField 进行搜索

swift - 在 Swift 中编译时强制执行有效的整数值

ios - Swift - 使用 UIBezierPath 裁剪图像

ios - Swift - 使用应用程序时的交互式入门

ios - Swift 不检索 Firebase 值(返回值作为 NSNull)

ios - 一种在每次快速运行时重新加载 ViewDidLoad 的方法

ios - 分机上的 "Undefined symbols for architecture arm64"

ios Charts 3 - 为每个数据点绘制 X 轴标签

ios - 为什么我不能捕获这个 Swift 异常?