如何在Swift中顺利舍入100%

时间:2018-09-19 21:48:19

标签: ios swift numbers int

我有一个数字数组,长度可以变化

let arrayNum = [1 ,5, 3, 12] // could also be [1, 5] or [1, 3, 5, 3, 1] 
let sum = arrayNum.reduce(0, +)

我要使用这种方法来计算每个元素的百分比并显示在标签上

 for value in arrayNum {
     percentageLabel.text = "\(value * 100 / sum) %"
 }

但是,百分比之和不等于100%

1 has 4%
5 has 23%
3 has 14%
12 has 57%

total % is 99%

有人在这种情况下有更好的解决方案吗?谢谢。

P.S我不希望它们的分数值像99.2%或40.56%。我只希望他们是99%或40%。

1 个答案:

答案 0 :(得分:1)

您故意引入舍入错误,然后假装自己没有。那永远都行不通。

对于您给出的特定案例,发生,您可以通过四舍五入来解决问题:

let arrayNum = [1 ,5, 3, 12] // could also be [1, 5] or [1, 3, 5, 3, 1] 
let sum = arrayNum.reduce(0, +)
for value in arrayNum {
    let d = (Double(value) * 100 / Double(sum)).rounded()
    let s = "\(Int(d))%"
    percentageLabel.text = s
}

5%
24%
14%
57%
[total is 100%]

但是您不能指望这种方法能够普遍地起作用;数字就是那样。您必须在算术上诚实。