所选设备中的浮点数已损坏

时间:2014-11-03 02:15:54

标签: android

最近,我在选定的Android设备中遇到了浮点数损坏的问题。我想知道,你们中的任何人遇到过与我类似的问题, 还有办法用简化的代码块重现它吗?

我在Nexus 5设备中遇到了类似的问题。这个问题在Genymotion Emulator中没有发生。

它只发生在选择的循环代码块中,并且在其他代码块中重新生成是非常困难的。

我的情况如下: -

float rectangleWidth2 = 0.0f;
float startX = (float) (left + xPixelsPerUnit * (xValue - minX));
float stopX = startX;
float _left = startX - rectangleWidth2;
float _right = stopX + rectangleWidth2;

// I expect "_left" and "_right" will have same value. However, at this point,
// "_right" will become an arbitary large value, something like 5.3482353354E20
// However, I expect the value range for "_left" and "_right" within [-1000,1000]

如果我将代码更改为

float _left = startX - rectangleWidth2;
float _right = startX + rectangleWidth2;

// "_left" and "_right" will then having same value.

A"可靠"我的情况解决方法是避免使用记者提出的浮动。我尽可能使用double,只在需要时执行必要的浮动铸造。

无论我使用的是Eclipse还是Android Studio,都会出现同样的问题。我本周要去买Nexus 4,看看是否还会出现同样的问题......

参考链接

0 个答案:

没有答案