色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

double精度丟失的原因

方一強2年前138瀏覽0評論

double精度丟失的原因?

發生精度丟失的原因:

個人理解:機器在運行時,使用2進制形式的計數方式,而我們日常生活中的計算是10進制的,對于整數的加減乘除,double還能適用,但是對于有小數的,則容易發生精度丟失,即用2進制表示10進制小數時,部分小數只是近似的表示,2進制表示不完全準確,此時,只能用BigDecimal來進行精確的精度計算。

double d1=5.0;

double d2=4.9;

BigDeciaml b1=new BigDeciaml(d1);

BigDecimal b2=new BigDecimal(d2);

加法運算:

double sum=b1.add(b2).doubleValue();

減法運算:

double sub=b1.subtract(b2).doubleValue();

乘法運算:

double mul=b1.multiply(b2).doubleValue();

除法運算:

//scale表示指定保留幾位小數,若發生除不盡的情況,則按四舍五入來保留小數

double div=b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();

只保留小數位數的兩種方法:

1)double num1=b1.divide(1,scale,BigDecimal.ROUND_HALF_UP).doubleValue();

2)BigDecimal bg=new BigDecimal(d1);

double num2=bg.setScale(scale,BigDecimal.ROUND_HALF_UP).douleValue();

3)DecimalFormat bg=new DecimalFormat("###0.00");

double num3=bg.format(d1);

4)String num4=String.format("%.2f",d1);//與C語言的打印輸出類似

String num5=String.format("%.2f,%.3f,%.3f",d1,d1,d3);

注意:doubleValue() 將此BigDecimal 轉換為 double

php數組顯示到div,double精度丟失的原因