Swift取整Double

39

我正在尝试将一个双精度浮点数四舍五入到一个整数。

var numberOfBottles = totalVolume / volumeEachBottles
例如numberOfBottles = 275.0 / 250.0,这将给出1.1,我需要将其四舍五入为2

你想要整数2还是双精度浮点数2.0? - BallpointBen
4个回答

64

尝试:

var numberOfBottles = totalVolume / volumeEachBottles
numberOfBottles.rounded(.up) 
或者
numberOfBottles.rounded(.down)

24

有一个名为ceil的内置全局函数可以精确地执行此操作:

var numberOfBottles = ceil(totalVolume/volumeEachBottles)

这将返回2,作为一个Double

enter image description here

ceil实际上是在math.h中声明的,并在OS X man pages中有文档。它几乎肯定比任何其他方法都更有效率。

即使你需要一个Int作为最终结果,我也建议先像这样计算ceil,然后对ceil计算的结果使用Int构造函数。


它不是内置的,你必须import Foundation才能使用它。 - BallpointBen

1
import Foundation

var numberOfBottles = 275.0 / 250.0
var rounded = ceil(numberOfBottles)

0
如果您想将其四舍五入为整数并在UI中使用,则可以使用此功能。只需将其添加为文件中的最后一项或单独的文件即可:
extension Double {
func roundToInt() -> Int{
    return Int(Darwin.round(self))
}

}

如果您想将其放在文本标签中,请像这样使用:

currentTemp.text = "\(weatherData.tempCelsius.roundToInt())"

或者将其作为整数打印出来:

print(weatherData.tempCelsius.roundToInt())

当double大于maxint时,这会出错。 - Toad

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