2014-04-21 77 views
4

以下代碼似乎破壞舊版Android設備上的Float.isNaN()邏輯。 的裝置:LG-GT540/Android2.3.7爲什麼Float.isNaN(Float.NaN)在舊的LG手機Android 2.3.7上是「假」?

[重要UPDATE] 船上的Android是SwiftDroid V2.0 ASIS(基於的CyanogenMod-7.1.0)

int a = 2; 
float b = a; 
Log.d("yo", "1, Float.isNaN=" + Float.isNaN(Float.NaN)); 
boolean test = (b == 2); 
Log.d("yo", "2, Float.isNaN=" + Float.isNaN(Float.NaN)); 

這使得浮動。 isNaN(Float.NaN)返回「false」,這是錯誤的。

你知道爲什麼嗎?

這是JVM錯誤嗎?

在所有我們擁有的設備,該代碼會如期運行:

1, Float.isNaN=true 
2, Float.isNaN=true 

可是,在一箇舊的Android從LG第二NaN的測試失敗。

1, Float.isNaN=true 
2, Float.isNaN=false 

但爲什麼?!

解決此案件的任何想法都非常受歡迎!

+5

看起來像一個bug – d3dave

+0

謝謝!我們來看看還有其他人要說些什麼。有關解決方法的任何想法? – Pavel

回答

0

根據wiz3kid的評論,這是一個錯誤。 也許犯的錯誤是修飾SwiftDroid V2.0 ASIS相關(基於CyanogenMod的-7.1.0)

相關問題