private void waveformProgress(double currentProgressPercentage) {
if (currentProgressPercentage < 0.0f) currentProgressPercentage = 0.0f;
if (currentProgressPercentage > 1.0f) currentProgressPercentage = 1.0f;
waveView.setProgress((float) (100.0 * currentProgressPercentage));
..
}
在对kotlin setter的调用中,我在setProgress行上有罕见的崩溃报告:
var progress: Float = 0F
set(value) {
require(value in 0..100) { "Progress must be in 0..100" }
...
}
我知道浮点数等的所有知识,但是require怎么可能在这里失败?我该如何纠正?我想当崩溃发生在旧版本中时,Crashlytics可能会报告新版本号,而该旧版本无法确保版本号在1..100之间。
最佳答案
有一个currentProgressPercentage
,您应该为此异常: NaN
(它实际上不是单个值,但这在这里无关紧要)。两次比较都将为false,并且(float) (100.0 * currentProgressPercentage)
将返回不在NaN
范围内的0..100
。可以例如通过计算NaN
来生成0.0/0.0
。