java,double型转换成float型输出
public class aaa {
public static void main ( String args[] ) {
float f = 123456.6789f ;
double d = 123456789.123456789 ;
f = (float) d ;
System.out.println(f) ;
}
}
这是代码,
为什么最后的输出结果是:1.23456792E8? 2E8里面的2是怎么来的? 是什么意思?
在计算机中,无论是单精度或双精度浮点,它们都是用二进制近似表示的
因为是近似表示,所以它有精度误差的,特别是float的,它只有6~7位有效数,也就是第8位上的就不精确了(若要完全理解,你可以去研究下IEEE754标准),结果中的这个2就是因为误差生成的。而E8是科学计数法,表示10的8次方。
热门标签: