tio*_*chi 2 java math android zero
我在我的应用程序的某个地方有以下代码
float private myMethod(float c){ result = (float) (c+273.15); }
当"c"得到的值类似于-273.1455时,结果非常接近零,如0.0044.
但是当它得到值-273.15时,我得到的不是零:6.1035157E-6
为什么会这样?
Rog*_*sjö 6
问题是273.15是双重的,而不是浮点数,它们都不能完全代表273.15.但是,由于它们具有不同的精度,因此它们将实际存储不同的数字.当完成加法时,c被转换为double,这将能够存储273.15的浮点表示.所以现在你有两个具有几乎相同值的双打,差异将不为零.
要获得"更可预测"的结果,请使用273.15f确保您在计算中有浮动.这应该可以解决这个问题,但你需要做的是阅读二进制浮点算术,以及它与我们在学校教授的十进制算术有何不同.
浮点上的Wiki是一个很好的起点.
归档时间:
14 年,1 月 前
查看次数:
208 次
最近记录: