要求失败,浮点数

private void waveformProgress(double currentProgressPercentage) { 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你应该得到这个exception: NaN (它实际上不是一个单一的值,但是这里没关系)。 这两个比较都是错误的, (float) (100.0 * currentProgressPercentage)将返回一个不在范围0..100内的NaNNaN可以例如通过计算0.0/0.0来产生。