计算按下的两个按钮的百分比时变为零

时间:2017-12-04 20:40:42

标签: swift math

我有两个按钮,一个是侧面按钮,另一个是暗侧按钮。按下任何按钮时,请执行以下操作:

    lightSideInt = lightSideInt! + 1
    totalClicks = totalClicks!+1

    let lightPercent = (lightSideInt!/totalClicks!) * 100
    let darkPercent = (darkSideInt!/totalClicks!) * 100

    darkSideButton.setTitle("\(darkPercent)%",for: .normal)
    lightSideButton.setTitle("\(lightPercent)%",for: .normal)

除了darkSideInt = darkSideInt! + 1之外的暗按钮一样,一切都是一样的。 darkSideIntlightSideInt& totalClicks是全局变量。

现在发生的事情是,当我第一次按下按钮时,它会给出一个按钮标题100%而另一个0%,然后使用它必须关闭屏幕,然后进入此屏幕再次。所以这次变量是全局的,他们已经有了值,所以当我按下按钮时,我可以看到增量成功发生,但按钮标题是0%,无论我按下多少次按钮,它仍然是相同。

这些是全局变量:

var darkSideInt: Int?
var lightSideInt: Int?
var totalClicks: Int?

1 个答案:

答案 0 :(得分:3)

/运算符应用于两个Int时,结果也将是Int类型,因此您的问题就出现了。在应用除法之前,您需要将两个变量都转换为Double

let lightPercent = Int(Double(lightSideInt)/Double(totalClicks) * 100)
let darkPercent = Int(Double(darkSideInt)/Double(totalClicks) * 100)

darkSideButton.setTitle("\(darkPercent)%",for: .normal)
lightSideButton.setTitle("\(lightPercent)%",for: .normal)

如果您要强制解包分配给它们的值,则将lightSideIntdarkSideInt定义为可选项是没有意义的。只需将它们定义为非选项,然后就可以摆脱百分比计算中的力量展开。