Kotlin计算器百分比功能异常问题排查求助
问题排查与解决方案
问题根源出在百分比运算的逻辑上:
- 直接输入
10后点击%时,currentResult为初始值0(未点击等号确认结果,isEqualButtonClicked为false),执行(0 * 10) / 100得到0,不符合预期。 - 点击等号后,
currentResult被赋值为10,再点击%时执行(10 * 10) / 100得到1,符合预期。
你需要调整百分比运算的基数判断逻辑,当没有有效历史结果时,用当前输入的数字作为基数计算。修改PERCENTAGE分支代码如下:
PERCENTAGE -> { // 当已有确认的历史结果时用currentResult,否则用当前输入的数字作为基数 val calculationBase = if (isEqualButtonClicked && currentResult != 0.0) currentResult else thisOperationNumber thisOperationNumber = (calculationBase * thisOperationNumber) / 100 currentValue = formatDoubleToString(thisOperationNumber) }
逻辑说明
- 若
isEqualButtonClicked为true且currentResult不为0,说明存在已确认的历史运算结果,沿用原逻辑用currentResult作为基数。 - 若未点击过等号(无有效历史结果),则用当前输入的
thisOperationNumber作为基数,此时输入10点击%会计算(10 * 10) / 100 = 1,符合你的预期。
如果你的计算器设计需求是直接输入数字点击%得到当前数的百分之一(即10→0.1),则可将计算逻辑简化为:
thisOperationNumber = thisOperationNumber / 100
内容的提问来源于stack exchange,提问作者Camp Nerd
相关产品推荐
相关产品推荐

