java.math.BigDecimal()的用法
Java中簡單的浮點數(shù)類型float和double是不能進行運算的,不光Java,很多語言都是這樣。
我們運行下面程序你將會看到
public class TestMathDecimal {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
我們的第一反應(yīng)是做四舍五入。Math中的roound是不能夠設(shè)置保留幾位小數(shù)的。
Math.round(4.015 * 100)的結(jié)果為401,而不是我們期望的402。
因此如果我們要進行精確的四舍五入,不能利用簡單類型做任何運算。
java.text.DecimalFormat也不能解決這個問題:
System.out.println(new java.text.DecimalFormat("0.00").format(4.015));輸出的是4.02。
BigDecimal
在商業(yè)計算中我們要用java.math.BigDecimal.BigDecimal有四個構(gòu)造方法,我們不關(guān)心BigInteger來構(gòu)造的那兩個,還有兩個分別是:
BigDecimal(double val)
BigDecimal(String val)
除法運算:
System.out.println(new BigDecimal(153.5).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP));
new BigDecimal(100)除數(shù),2精確的位數(shù),BigDecimal.ROUND_HALF_UP:舍入模式
加法運算:
System.out.println(new BigDecimal("2.005").add(new BigDecimal("0.03")));
減法運算:
System.out.println(new BigDecimal("2.00").subtract(new BigDecimal("1.10")));
乘法運算:
System.out.println(new BigDecimal("2.05").multiply(new BigDecimal("10")));
ps:此處可能說的不是很清楚,以后會繼續(xù)更新的。
轉(zhuǎn)載于:https://www.cnblogs.com/lovefeng/p/4678202.html
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的java.math.BigDecimal()的用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Objective-C设计模式——生成器
- 下一篇: 使用OMF特性