2014-04-21 49 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)

相关问题