js 转换数字为decmail_BigDecmail(解决java计算精度问题)
當使用double進行商業運算時,double計算會丟失精度。可以使用BigDecimal進行計算。
import java.math.BigDecimal;
import org.junit.Test;
public class TestBigDecimal{
@Test
public void test(){
double a=0.1;
double b=0.2;
System.out.println(a+b);
BigDecimal a1=new BigDecimal("0.1");
BigDecimal b1=new BigDecimal("0.2");
System.out.println(a1+b1);
BigDecimal c1=new BigDecimal("0.23574");
a1=a1.add(c1);
a1=a1.setScale(1,BigDecimal.ROUND_DOWN);
System.out.println(a1);
}
}
運行后,輸出結果如下:
0.30000000000000004
0.3
0.4
double的加減無法精確計算出0.3,而使用BigDecimal卻可以。
當然,如果直接將double傳給BigDecimal,你會發現不但無法解決精度問題,反而對精度進行了補全。所以,為確保精度,我們將String傳給它。
還可以看到上邊使用了.setScale方法,它還有很多方法供我們使用:
add(BigDecimal) ? ? ? ?BigDecimal對象中的值相加,然后返回這個對象。
subtract(BigDecimal) BigDecimal對象中的值相減,然后返回這個對象。
multiply(BigDecimal) ?BigDecimal對象中的值相乘,然后返回這個對象。
divide(BigDecimal) ? ? BigDecimal對象中的值相除,然后返回這個對象。
toString() ? ? ? ? ? ? ? ?將BigDecimal對象的數值轉換成字符串。
doubleValue() ? ? ? ? ?將BigDecimal對象中的值以雙精度數返回。
floatValue() ? ? ? ? ? ? 將BigDecimal對象中的值以單精度數返回。
longValue() ? ? ? ? ? ? 將BigDecimal對象中的值以長整數返回。
intValue() ? ? ? ? ? ? ? 將BigDecimal對象中的值以整數返回。
總結
以上是生活随笔為你收集整理的js 转换数字为decmail_BigDecmail(解决java计算精度问题)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql proxy读写分离实现_使用
- 下一篇: lisp 标记形心_标记-压缩算法