在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ java中兩個整數(shù)相除獲得浮點數(shù)會丟失精度么

java中兩個整數(shù)相除獲得浮點數(shù)會丟失精度么

看到一串代碼

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

我記得浮點數(shù)做運算會丟失精度,例如

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);
    }
}

結(jié)果:
0.060000000000000005
0.5800000000000001
401.49999999999994
1.2329999999999999

像這樣兩個整形數(shù)相除獲得浮點數(shù),會有精度問題么?

補充:

如果是取小數(shù)點后幾位的話,這樣計算的結(jié)果可靠么?
回答
編輯回答
陌如玉

不是“浮點數(shù)做運算會丟失精度”,而是浮點數(shù)本身存儲方式?jīng)Q定其精度有限

2018年8月17日 03:52
編輯回答
愿如初

感覺自己頓悟了。。。。
兩個整形相除應(yīng)該還是整形。我的例子里面把整形數(shù)變成了浮點數(shù)再除,肯定是有精度問題的。

2018年3月3日 16:44
編輯回答
離夢

數(shù)學(xué)中的小數(shù)是無限的,計算機中的能表示的浮點數(shù)是有限的,肯定有精度問題啊.

public static void main( String[] args )
    {
        double d=4.015*100;
        System.out.println(d);
    }

輸出結(jié)果:
401.49999999999994
所以取小數(shù)點后幾位并不可靠.

2017年10月25日 03:10
編輯回答
選擇

用BigDecimal就行了

2018年4月1日 23:08