int big = 1234567890;
float approx = big;
System.out.println(big);
System.out.println(approx);输出结果:
1234567890
1.23456794E9为什么float会输出这个数字呢请请指教~

解决方案 »

  1.   

    Widening primitive conversions(基本类型扩宽转换)。
       以所占字节数为基准,单字节向多字节转换就是所谓的扩宽,比如1到2、2到4等。int到其他整数类型的转换、float到double是没有失真的,完全一致。但是整数到浮点数的转换虽然也是扩宽,但因为浮点数是用有效数字的方式进行表示的,转换的时候可能出现精度损失(float类型不能支持9位有效数字),如int i=1234567890;float pp = i - (float)i;pp不等于零。带符号int转换为其他整数类型的方法是对其数字的二位补码方式进行带符号扩展【这个me碰到问题的关键byte-》int】,char类型转换为int类型的方法是进行0扩展。提示:无论精度是否损失,扩宽转换都不能引发运行时错误。摘自http://www.wangchao.net.cn/bbsdetail_54908.html
      

  2.   

    但为什么转成float型,会显示那个数,不是别的呢求解~
      

  3.   

    科学计数法。
    你看看java.text.DecimalFormat类,它可以按照你的要求格式化数字。
      

  4.   

     我的理解是 int型转浮点型  为了更好的让我们这群菜鸟明白 什么叫浮点 所以 转化成科学计数法了.
     在项目中有遇到这样的问题.
      

  5.   

    楼主可以去了解下科学计数法
    5.0E3 可以简单认为是 5000
    就是5 * 10的3次方我试过如果你用
    String s_number = "1234567890";
    float f_number = Float.valueOf(s_number);
    System.out.println(f_number);结果还是一样,估计误差总是不变的