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" }
...
}
我知道浮点相等和所有,但是如何在这里失败?我该如何纠正?我想Crashlytics可能会在旧版本发生崩溃时报告新版本号,但不能确保数字介于1..100之间。
有一个currentProgressPercentage
你应该得到这个例外:NaN
(它实际上不是单个值,但这在这里无所谓)。两次比较都是错误的,而(float) (100.0 * currentProgressPercentage)
将返回NaN
,这不在0..100
的范围内。例如,通过计算NaN
可以产生0.0/0.0
。