要求失败,浮点数

时间:2017-12-29 15:00:31

标签: java floating-point kotlin

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之间。

1 个答案:

答案 0 :(得分:3)

有一个http://my-api.com:8000${data.objects[i].content_url}你应该得到这个例外:NaN(它实际上不是单个值,但这并不重要)。两次比较都是错误的,currentProgressPercentage将返回(float) (100.0 * currentProgressPercentage),而NaN不在0..100范围内。例如,可以通过计算NaN来生成0.0/0.0