最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

BigDecimal如何保留兩位小數(shù)

 更新時(shí)間:2026年04月01日 09:36:43   作者:慢慢變富的w  
本文介紹了浮點(diǎn)數(shù)計(jì)算的不精確性,以及在商業(yè)計(jì)算中需要使用BigDecimal來保證精確性,詳細(xì)解釋了BigDecimal的setScale()方法和roundingMode常量的使用方法,并提供了示例代碼

前言

在項(xiàng)目中經(jīng)常會(huì)用到小數(shù)的一些計(jì)算,而float和double類型的主要設(shè)計(jì)目標(biāo)是為了科學(xué)計(jì)算和工程計(jì)算。

他們執(zhí)行二進(jìn)制浮點(diǎn)運(yùn)算,這是為了在廣域數(shù)值范圍上提供較為精確的快速近似計(jì)算而精心設(shè)計(jì)的。

然而,它們沒有提供完全精確的結(jié)果,所以不應(yīng)該被用于要求精確結(jié)果的場(chǎng)合。

但是,商業(yè)計(jì)算往往要求結(jié)果精確。所以有時(shí)候必須要采用BigDecimal。

1.代碼實(shí)現(xiàn)

代碼如下(示例):

public class Demo {
   public static void main(String[] args) {
  		BigDecimal a =null;
  		Integer faultRate = 6;
  		a = BigDecimal.valueOf(faultRate.doubleValue()/3);
  		BigDecimal  b =a.setScale(2, RoundingMode.HALF_UP);//保留兩位小數(shù)
  		System.out.println("結(jié)果是"+b);
  		//下面將結(jié)果轉(zhuǎn)化成百分比
  		NumberFormat percent = NumberFormat.getPercentInstance();
       percent.setMaximumFractionDigits(2);
       System.out.println(percent.format(b.doubleValue()));
   }
}

運(yùn)行結(jié)果:


2.方法詳解

  • BigDecimal.setScale()方法用于格式化小數(shù)點(diǎn)
  • setScale(1)表示保留一位小數(shù),默認(rèn)用四舍五入方式
  • setScale(1,BigDecimal.ROUND_DOWN)直接刪除多余的小數(shù)位,如2.35會(huì)變成2.3
  • setScale(1,BigDecimal.ROUND_UP)進(jìn)位處理,2.35變成2.4
  • setScale(1,BigDecimal.ROUND_HALF_UP)四舍五入,2.35變成2.4
  • setScaler(1,BigDecimal.ROUND_HALF_DOWN)四舍五入,2.35變成2.3,如果是5則向下舍
  • setScaler(1,BigDecimal.ROUND_CEILING)接近正無窮大的舍入
  • setScaler(1,BigDecimal.ROUND_FLOOR)接近負(fù)無窮大的舍入,數(shù)字>0和ROUND_UP作用一樣,數(shù)字<0和ROUND_DOWN作用一樣
  • setScaler(1,BigDecimal.ROUND_HALF_EVEN)向最接近的數(shù)字舍入,如果與兩個(gè)相鄰數(shù)字的距離相等,則向相鄰的偶數(shù)舍入。

注釋

1:scale指的是你小數(shù)點(diǎn)后的位數(shù)。

  • 比如123.456則score就是3.
  • score()就是BigDecimal類中的方法啊。
  • 比如:BigDecimal b = new BigDecimal(“123.456”);b.scale(),返回的就是3.

2:roundingMode是小數(shù)的保留模式。

  • 它們都是BigDecimal中的常量字段,有很多種。
  • 比如:BigDecimal.ROUND_HALF_UP表示的就是4舍5入。

3:pubilc BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)的意思是說:

  • 我用一個(gè)BigDecimal對(duì)象除以divisor后的結(jié)果,并且要求這個(gè)結(jié)果保留有scale個(gè)小數(shù)位,
  • roundingMode表示的就是保留模式是什么,是四舍五入啊還是其它的,你可以自己選!

4:對(duì)于一般add、subtract、multiply方法的小數(shù)位

格式化如下:

  BigDecimal mData = new BigDecimal("9.655").setScale(2, BigDecimal.ROUND_HALF_UP);
  System.out.println("mData=" + mData);

運(yùn)行結(jié)果:

mData=9.66

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • selenium+java+chrome環(huán)境搭建的方法步驟

    selenium+java+chrome環(huán)境搭建的方法步驟

    這篇文章主要介紹了selenium+java+chrome環(huán)境搭建的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • SpringBoot整合MP通過Redis實(shí)現(xiàn)二級(jí)緩存方式

    SpringBoot整合MP通過Redis實(shí)現(xiàn)二級(jí)緩存方式

    這篇文章主要介紹了SpringBoot整合MP通過Redis實(shí)現(xiàn)二級(jí)緩存方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Spring對(duì)事務(wù)管理的支持

    Spring對(duì)事務(wù)管理的支持

    今天小編就為大家分享一篇關(guān)于Spring對(duì)事務(wù)管理的支持,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Java集合Stack源碼詳解

    Java集合Stack源碼詳解

    java工具包中的Stack是繼承于Vector(矢量隊(duì)列)的,由于Vector是通過數(shù)組實(shí)現(xiàn)的,這就意味著,Stack也是通過數(shù)組實(shí)現(xiàn)的,而非鏈表。當(dāng)然,我們也可以將LinkedList當(dāng)作棧來使用!
    2018-05-05
  • springboot+rabbitmq實(shí)現(xiàn)指定消費(fèi)者才能消費(fèi)的方法

    springboot+rabbitmq實(shí)現(xiàn)指定消費(fèi)者才能消費(fèi)的方法

    當(dāng)項(xiàng)目部署到測(cè)試環(huán)境后,QA測(cè)試過程中,總是“莫名其妙”的發(fā)現(xiàn)所保存的用戶付款單數(shù)據(jù)有問題。這篇文章主要介紹了springboot+rabbitmq實(shí)現(xiàn)指定消費(fèi)者才能消費(fèi),需要的朋友可以參考下
    2021-11-11
  • 總結(jié)java多線程之互斥與同步解決方案

    總結(jié)java多線程之互斥與同步解決方案

    文中總結(jié)了線程互斥與同步,synchronized使用細(xì)節(jié)及原理,Reentrylock使用細(xì)節(jié)等知識(shí),對(duì)解決Java多線程互斥與同步等問題很有效,,需要的朋友可以參考下
    2021-05-05
  • 詳解Spring Boot對(duì) Apache Pulsar的支持

    詳解Spring Boot對(duì) Apache Pulsar的支持

    Spring Boot通過提供spring-pulsar和spring-pulsar-reactive自動(dòng)配置支持Apache Pulsar,類路徑中這些依賴存在時(shí),Spring Boot自動(dòng)配置命令式和反應(yīng)式Pulsar組件,PulsarClient自動(dòng)注冊(cè),默認(rèn)連接本地Pulsar實(shí)例,感興趣的朋友一起看看吧
    2024-11-11
  • Maven打包報(bào)錯(cuò)"powershell不是內(nèi)部命令"的解決方法

    Maven打包報(bào)錯(cuò)"powershell不是內(nèi)部命令"的解決方法

    Maven打包時(shí)遇到"powershell不是內(nèi)部命令"的報(bào)錯(cuò),根源在于路徑中的空格,當(dāng)IDEA安裝在含空格的路徑,下面小編就和大家詳細(xì)介紹一下具體解決方法吧
    2026-02-02
  • SpringBoot?Admin集成診斷利器Arthas示例實(shí)現(xiàn)

    SpringBoot?Admin集成診斷利器Arthas示例實(shí)現(xiàn)

    這篇文章主要為大家介紹了SpringBoot?Admin集成診斷利器Arthas示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Java中String類(字符串操作)的10個(gè)常見問題和解決方法

    Java中String類(字符串操作)的10個(gè)常見問題和解決方法

    這篇文章主要介紹了Java中String類(字符串)操作的10個(gè)常見問題,需要的朋友可以參考下
    2014-04-04

最新評(píng)論

杨浦区| 白城市| 金秀| 永仁县| 铁岭县| 汾西县| 平阴县| 涞源县| 尚义县| 治多县| 潜山县| 呼玛县| 南和县| 巴塘县| 湘阴县| 十堰市| 榆社县| 高清| 浪卡子县| 肃宁县| 田阳县| 东海县| 申扎县| 周宁县| 囊谦县| 海林市| 喜德县| 左云县| 阜阳市| 冷水江市| 固安县| 连城县| 古蔺县| 杭锦后旗| 凤庆县| 汉沽区| 涞水县| 呼伦贝尔市| 安图县| 松滋市| 永春县|