由于零而总是将滑块累加到100%失败的算法

时间:2017-06-05 09:26:50

标签: ios swift xcode algorithm

这是(应该是)一个函数,它确保多个滑块的值总和的总和加起来为globalTotal

用户可以手动将滑块值更改为changer.value,然后将此功能应用于其他滑块的值时,可以确定其新值或{{1} }。

需要更改滑块的endVal和更改startVal的滑块的原始值,并且可以通过加权确定其他值。

问题和我的问题是。有时changerStartVal可以(当滑块更改一直移动到最大值时)或remainingStartVals可以(当滑块更改时)移动到零,然后移动另一个滑块)。当发生这种情况时,我分别得到除零或乘零。这两个都很糟糕,导致不正确的结果。有没有一种简单的方法来解决这个问题?

startVal

1 个答案:

答案 0 :(得分:0)

嘿@Sean我在这里想到的最简单的调整是检查remainingStartVals是不是 0 ,这意味着有权重分配给其他滑块并检查是否一个滑块的重量开始,这意味着它的startVal不应该等于 0

func calcNewVal(startVal: Float, changerStartVal: Float) -> Float{
var endVal = 0
let remainingStartVals = globalTotal - changerStartVal
if remainingStartVals != 0 || startVal != 0{
    let remainingNewVals = globalTotal - changer.value
    endVal = ((startVal * (100 / remainingStartVals)) / 100) * remainingNewVals
}
return endVal

}