Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
今天我面临着android代码中非常不正常的错误_Android_Findbugs - Fatal编程技术网

今天我面临着android代码中非常不正常的错误

今天我面临着android代码中非常不正常的错误,android,findbugs,Android,Findbugs,我试图从8.6f值中减去1.0f,它返回7.6000004 float temp=8.6f-1.0f; Log.e("temp",temp+""); 它正在印刷 7.6000004 这里怎么了?我是安卓还是安卓?像这样的浮点运算是不精确的;这是计算机科学中一个众所周知的问题。另见: 这基本上是一个相同的问题,就像有人要求你给出一个精确的答案,1除以3,小数点后10位你能给出的最好答案是0.3334 但3*0.3334=1.0000000002 这是一个存

我试图从8.6f值中减去1.0f,它返回7.6000004

float temp=8.6f-1.0f;
Log.e("temp",temp+"");
它正在印刷 7.6000004
这里怎么了?我是安卓还是安卓?

像这样的浮点运算是不精确的;这是计算机科学中一个众所周知的问题。另见:

这基本上是一个相同的问题,就像有人要求你给出一个精确的答案,1除以3,小数点后10位你能给出的最好答案是0.3334

但3*0.3334=1.0000000002

这是一个存在于每个数字系统中的限制,只是在不同的情况下

如果需要精确数字,应使用BigDecimal:

导入java.math.BigDecimal; 类FloatingPointExample{ 公共静态无效字符串[]args{ //印刷品7.6000004 System.out.println8.6f-1.0f; //印刷品7.6 System.out.printlnnew BigDecimal8.6.New BigDecimal1.0; //不要将浮点数传递给BigDecimal //打印7.6000003814697265625 System.out.printlnnew BigDecimal 8.6f.减去New BigDecimal1.0f; //不要将double传递给BigDecimal //打印7.599999999996472863211994990644378662109375 System.out.printlnnew BigDecimal8.6.New BigDecimal1.0; } }
您好,Tejas,请输入您的问题的标题,因为SO要求您:具体一点,想象您正在向另一个人提问。这在java中很常见,您可以在这里看到:谢谢您的解释