欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

BigDecimal使用加減乘除小數(shù)點(diǎn)比較大小-創(chuàng)新互聯(lián)

BigDecimal 日常開發(fā)咋用 簡(jiǎn)介

用最簡(jiǎn)單的話來概括就是,這是ava.math包中提供的API類,對(duì)超過16位有效位的數(shù)進(jìn)行精確的運(yùn)算。
一般在java開發(fā)中,涉及到金額等敏感數(shù)字,不能接收有任何精度損失的時(shí)候,使用BigDecimal解決相關(guān)問題。
ps:為何不使用double 是因?yàn)殡p精度浮點(diǎn)型變量double可以處理16位有效數(shù),但是實(shí)際生活業(yè)務(wù)場(chǎng)景中,大額數(shù)字(尤其是日元,韓元,津巴布韋幣。。)會(huì)失去精度,因?yàn)椴徽撌莊loat 還是double都是浮點(diǎn)數(shù),而計(jì)算機(jī)是二進(jìn)制的,浮點(diǎn)數(shù)會(huì)失去一定的精確度。十進(jìn)制值通常沒有完全相同的二進(jìn)制表示形式;十進(jìn)制數(shù)的二進(jìn)制表示形式可能不精確。

創(chuàng)新互聯(lián)建站是一家專注于成都網(wǎng)站建設(shè)、網(wǎng)站制作與策劃設(shè)計(jì),江山網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:江山等地區(qū)。江山做網(wǎng)站價(jià)格咨詢:18982081108構(gòu)造器

BigDecimal(int) 創(chuàng)建一個(gè)具有參數(shù)所指定整數(shù)值的對(duì)象。

BigDecimal(double) 創(chuàng)建一個(gè)具有參數(shù)所指定雙精度值的對(duì)象。(不建議采用)

BigDecimal(long) 創(chuàng)建一個(gè)具有參數(shù)所指定長(zhǎng)整數(shù)值的對(duì)象。

BigDecimal(String) 創(chuàng)建一個(gè)具有參數(shù)所指定以字符串表示的數(shù)值的對(duì)象。

推薦使用BigDecimal.valueOf()方法來完成初始化值,少用構(gòu)造方法對(duì)BigDecimal賦值,BigDecimal構(gòu)造器會(huì)對(duì)不同數(shù)據(jù)類型調(diào)用不通的構(gòu)造方法。

加減乘除

BigDecimal amount = new BigDecimal("3");
		BigDecimal decimal = BigDecimal.valueOf(3);
		BigDecimal add = amount.add(decimal);
		System.out.println(add);
		System.out.println(amount.add(decimal));
		amount = amount.add(decimal);
		System.out.println(amount);

輸出結(jié)果在這里插入圖片描述

BigDecimal amount = new BigDecimal("3");
		BigDecimal decimal = BigDecimal.valueOf(3);
		BigDecimal add = amount.subtract(decimal);
		System.out.println(add);
		System.out.println(amount);

輸出結(jié)果在這里插入圖片描述
PS:從這里可以看出,bigDecimal是對(duì)象之間的操作,amount.subtract()后,amount對(duì)象本身的值是不會(huì)變化的,需要用一個(gè)新的對(duì)象來接收相減后的值。

BigDecimal amount = new BigDecimal("3");
		BigDecimal decimal = BigDecimal.valueOf(3);
		BigDecimal add = amount.multiply(decimal);
		System.out.println(add);
		System.out.println(amount);

輸出結(jié)果在這里插入圖片描述

BigDecimal amount = new BigDecimal("3");
		BigDecimal decimal = BigDecimal.valueOf(3);
		BigDecimal add = amount.divide(decimal);
		System.out.println(add);
		System.out.println(amount);

輸出結(jié)果在這里插入圖片描述
使用除法后,出現(xiàn)無限不循環(huán)小數(shù)等等復(fù)雜情況下,可以設(shè)置保留相關(guān)小數(shù)
報(bào)錯(cuò)信息:
Exception in thread “main” java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
at java.math.BigDecimal.divide(BigDecimal.java:1707)
at com.yhsc.yhsc.mall.service.impl.YhscApproveLogServiceImpl.main(YhscApproveLogServiceImpl.java:74)

小數(shù)點(diǎn)設(shè)置
BigDecimal amount = new BigDecimal("10");
		BigDecimal decimal = BigDecimal.valueOf(3);
		BigDecimal add = amount.divide(decimal,2,ROUND_CEILING);
		System.out.println(add);
		System.out.println(amount);

輸出結(jié)果在這里插入圖片描述
divide(bigdecimal,保留小數(shù)點(diǎn)后幾位小數(shù),舍入模式)

舍入模式

ROUND_CEILING

向正的無限方向舍入

ROUND_DOWN

向零方向舍入

ROUND_FLOOR

向負(fù)的無限方向舍入

ROUND_HALF_DOWN

除非兩側(cè)距離相等,否則四舍五入到最接近(距離)的一側(cè)。 如果是,就四舍五入。 例如,1.55會(huì)保留小數(shù)1.5的結(jié)果

ROUND_HALF_EVEN

向最接近(距離)的一側(cè)的舍入,除了兩側(cè))的距離相等的情況以外,如果是,則在預(yù)約位數(shù)為奇數(shù)的情況下為ROUND_HALF_UP,在偶數(shù)的情況下為

ROUND_HALF_DOWN

ROUND_HALF_UP (常用)

方向(距離) )

最近的一邊舍入,除非兩邊(的距離)是相等,如果是這樣,向上舍入, 1.55保留一位小數(shù)結(jié)果為1.6,也就是我們常說的“四舍五入”
ROUND_UNNECESSARY

計(jì)算結(jié)果是精確的,不需要舍入模式

ROUND_UP

向遠(yuǎn)離0的方向舍入

對(duì)BigDecimal進(jìn)行截?cái)?br />需要對(duì)BigDecimal進(jìn)行截?cái)嗪退纳嵛迦肟捎胹etScale方法

  1. setScale(int x); BigDecimal值后保留x位小數(shù)

  2. setScale(x, BigDecimal.ROUND_DOWN); 保留1位小數(shù),默認(rèn)用四舍五入

  3. setScale(x, BigDecimal.ROUND_HALE_UP); 保留一位小數(shù),向上舍入

  4. setScale(x, BigDecimal.ROUND_HALF_DOWN); 保留一位小數(shù),向下舍入

BigDecimal amount = new BigDecimal("10.565305");
		BigDecimal bigDecimal1 = amount.setScale(1, BigDecimal.ROUND_DOWN);// 直接刪除多余的小數(shù)
		BigDecimal bigDecimal2 = amount.setScale(2, BigDecimal.ROUND_HALF_UP);//四舍五入,向上舍入
		BigDecimal bigDecimal3 = amount.setScale(3, BigDecimal.ROUND_HALF_DOWN);//四舍五入,向下舍入
		System.out.println(bigDecimal1);
		System.out.println(bigDecimal2);
		System.out.println(bigDecimal3);

輸出結(jié)果

如何比較

BigDecimal比較大小使用compareTo(BigDecimal)方法:

int flag = bigdemical.compareTo(bigdemical1)。

flag = -1,表示bigdemical小于bigdemical1。

flag =0,表示bigdemical等于bigdemical1。

flag =1,表示bigdemical大于bigdemical1。

實(shí)際中直接跟0比較就可以了,別跟-1或者1比較。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)頁題目:BigDecimal使用加減乘除小數(shù)點(diǎn)比較大小-創(chuàng)新互聯(lián)
本文地址:http://chinadenli.net/article2/dhjgoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、搜索引擎優(yōu)化響應(yīng)式網(wǎng)站、網(wǎng)頁設(shè)計(jì)公司、外貿(mào)建站全網(wǎng)營(yíng)銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司