Kotlin,即使条件为 false,代码也会进入 if 语句

Bar*_*tos 0 android if-statement kotlin

我在这里真的很困惑......看起来像一个非常愚蠢的错误,但我不知道发生了什么。这是我的代码的一小段:

if (tempDeltaDeviation > standardDeltaDeviation) {
                        Log.e(TAG, "handleMessage: plus $tempDeltaDeviation : $standardDeltaDeviation")
                        scaleUpAnimation(deltaAnimStep, "Delta", binding.deltaImg)
}
Run Code Online (Sandbox Code Playgroud)

非常基本的东西,对吧?检查日志我可以看到:

handleMessage: plus 1.57756888292539E14 : 7.8364593205657E13
Run Code Online (Sandbox Code Playgroud)

不知道,但上次我检查 1 比 7 小得多,所以为什么应用程序输入 if 语句?

bro*_*oot 6

1.57756888292539E14事实上大于7.8364593205657E13.

这些数字以科学记数法表示,用于处理非常小或非常大的数字。1.57756888292539E14方法:1.57756888292539 * 10^14。通过将后面的数字增加E1,我们实际上将结果数字增加了 10 倍。通过将其增加 6,我们将结果数增加百万倍 (10^6 = 1000000)。

简单来说,您的数字实际上是:

  • 157756888292539 (1.57756888292539 * 100000000000000)
  • 78364593205657 (7.8364593205657 * 10000000000000)

正如您所看到的,第一个数字实际上更大。