账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    java中两个整数相除获得浮点数会丢失精度么
    33
    0

    看到一串代码

     int a=1099;  
     int b=93; 
     float num= (float)a/b;  

    我记得浮点数做运算会丢失精度,例如

    public class Test{
        public static void main(String args[]){
            System.out.println(0.05+0.01);
            System.out.println(1.0-0.42);
            System.out.println(4.015*100);
            System.out.println(123.3/100);
        }
    }
    
    结果:
    0.060000000000000005
    0.5800000000000001
    401.49999999999994
    1.2329999999999999
    

    像这样两个整形数相除获得浮点数,会有精度问题么?

    补充:

    如果是取小数点后几位的话,这样计算的结果可靠么?
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 黑白格调 普通会员 1楼

      在Java中,如果两个整数相除,确实有可能会丢失精度。

      例如,如果你有一个浮点数1.0和一个整数2,那么它们相除的结果将会是0.5。这是因为浮点数是不能精确表示为两个整数比例的,即使它们的绝对值接近。

      如果你在进行除法运算时,除数可能会有非常小的值,而被除数可能会有非常大的值。在这种情况下,可能会出现除以零的错误,或者得到一个小于实际结果的浮点数。

      为了避免这种情况,Java提供了强制类型转换的功能,可以使用Float.parseFloat()或Double.parseDouble()方法将整数转换为浮点数,然后再进行除法运算。

      例如,如果你有一个整数2和一个浮点数1.0,你可以这样做:

      java float num1 = 2.0f; float num2 = 1.0f; float result = num1 / num2;

      这样,即使num2非常小,也可以得到正确的结果。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部