将一个双精度浮点数保留两位小数

4

我写了一个简单的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") 

根据我在这里读到的,使用roundTo(places: 2)来保留两位小数,但是这会导致错误。

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

任何指针都将不胜感激!谢谢。

1
Leo Dabus提供的链接显示我的问题是重复的。对于那些将来可能遇到这个问题的人,我能够使用var cost: String = String(format:"%.2f", poundMonth)来获得所需的结果。谢谢。 - sark
1个回答

6

Double确实没有roundTo(places:)方法。这是一个你需要自己实现的方法。 要做到这一点,请参见此答案,例如。

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

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

但是: 如果您不需要圆整值进行任何进一步的计算,但想向用户显示它,则可以使用NumberFormatter。例如,它还提供本地化功能。请参见此答案

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接