currentProgressPercentage

currentProgressPercentage

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

10-08 00:34