的数据
我不明白为什么Double(total)值是15600,Int(total)值是15599?
func race(_ v1: Int, _ v2: Int, _ g: Int) -> [Int]? {
var vd: Double = Double(v2) - Double(v1)
var total = Double(3600) * (Double(g) / vd)
var n = Int(total)
var h = n / 3600
var m = (n - (3600 * h)) / 60
var s = (n - (m * 60) - (h * 3600))
return [h, m, s]
}
race(243, 270, 117)
字符串
1条答案
按热度按时间e5nszbig1#
Int.init(Double)
转换初始化器截断所有小数位。引用文档:作为源传递的值的任何小数部分都将被删除,并将值舍入为零。
total
的计算值为15599.999999999998
,其被舍入并在侧面板中显示为15600
。然而,截断小数位会导致整数值15559
。如果你想舍入,使用
Int(round(total))
。