提问人:Stefan Stojkovic 提问时间:10/28/2023 最后编辑:HangarRashStefan Stojkovic 更新时间:10/28/2023 访问量:52
有人可以解释为什么 Int(total) 的差异值比 Double(total) 不同
Can someone explain why is Int(total) difrent value than Double(total)
问:
我不明白为什么 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赞
Sulthan
10/28/2023
#1
转换初始值设定项截断所有小数位。引用文档:Int.init(Double)
作为源传递的值的任何小数部分都将被删除,并将值四舍五入为零。
的计算值是四舍五入并显示在侧面板中。但是,截断小数位会导致整数值。total
15599.999999999998
15600
15559
如果要舍入,请使用 .Int(round(total))
评论
0赞
Duncan C
10/28/2023
同意。真正的问题是,为什么侧面板将浮点数显示为舍入值而不是双精度值?
评论