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

關(guān)于bigDecimal類的精度保留方法

 更新時(shí)間:2023年07月04日 10:33:28   作者:weixin_39923623  
這篇文章主要介紹了關(guān)于bigDecimal類的精度保留方法,計(jì)算機(jī)存儲(chǔ)的浮點(diǎn)數(shù)受存儲(chǔ)bit位數(shù)影響,只能保證一定范圍內(nèi)精準(zhǔn),超過bit范圍的只能取近似值,Java使用java.math.BigDecimal專門處理小數(shù)精度,需要的朋友可以參考下

一、計(jì)算機(jī)的小數(shù)計(jì)算

計(jì)算機(jī)的小數(shù)計(jì)算一定范圍內(nèi)精確,超過范圍只能取近似值:

計(jì)算機(jī)存儲(chǔ)的浮點(diǎn)數(shù)受存儲(chǔ)bit位數(shù)影響,只能保證一定范圍內(nèi)精準(zhǔn),超過bit范圍的只能取近似值。

java中各類型的精度范圍參見:關(guān)于java中基本數(shù)據(jù)類型的數(shù)值范圍

編程時(shí)注意:

doulbe類型的數(shù),不能用等號(hào)判定是否相等(或者是一定范圍內(nèi)可以)。因?yàn)閮纱瓮瑯拥挠?jì)算(除法)結(jié)果可能出現(xiàn)小數(shù)部分不同。甚至極端的時(shí)候,初始化兩個(gè)小數(shù)時(shí),都可能不相等(用數(shù)值和字符串分別初始化bigdecimal的小數(shù)就會(huì)不等)

java小數(shù)處理方法的經(jīng)驗(yàn)總結(jié):

(1)小數(shù)計(jì)算對(duì)精度無要求時(shí),使用float節(jié)省時(shí)間。

(2)如果有精度要求,用BigDecimal類處理(初始化必須使用字符串,因?yàn)橛脭?shù)值初始化會(huì)得到近似值,不準(zhǔn)確),然后設(shè)置保留位數(shù)和 舍入法(half_up四舍五入,half_even銀行家,half_down向下取整)

(3)精度要求低時(shí)可轉(zhuǎn)化為整數(shù)處理(集體統(tǒng)一擴(kuò)大數(shù)量級(jí)):

乘以10的級(jí)數(shù)轉(zhuǎn)化為整數(shù)處理,小數(shù)點(diǎn)右移幾位,但整數(shù)值不要超過對(duì)應(yīng)類型的取值范圍。比如保留4位小數(shù),可統(tǒng)一乘以10000,然后只保留整數(shù)計(jì)算結(jié)果,保留近位的話就多乘一位。

這種方式在RTB項(xiàng)目MDSP的算法核心模塊中使用,幾十萬的投放量,用int或long就可以處理,更大范圍的整數(shù)處理BigInteger。

這樣的好處是:

a,計(jì)算快,除了除法,其他運(yùn)算上整數(shù)計(jì)算(加減乘)節(jié)省時(shí)間;

b,除法中,小數(shù)部分可直接省略,或向上取整(小數(shù)大于0時(shí)則加1)也可以讓小數(shù)點(diǎn)多移動(dòng)一位來保留進(jìn)位。

二、java專門的小數(shù)運(yùn)算類:

BigDecimal類型(比double和float小數(shù)運(yùn)算更精準(zhǔn)的小數(shù)計(jì)算)

float和double只能用來做科學(xué)計(jì)算或者是工程計(jì)算,在廣域數(shù)值范圍上提供較為精確的快速近似計(jì)算;而在商業(yè)計(jì)算要求結(jié)果精確(比如,有的編程語言中提供了專門的貨幣類型來處理),所以Java使用java.math.BigDecimal專門處理小數(shù)精度

構(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ì)象。

使用原則:初始化小數(shù)必須用String來夠造,BigDecimal(String),因?yàn)橛胐ouble的小數(shù)是近似值,不是精確值。

BigDecimal成員方法

add(BigDecimal) 對(duì)象自身與參數(shù)相加,然后返回這個(gè)對(duì)象。

subtract(BigDecimal) 對(duì)象自身與參數(shù)相減,然后返回這個(gè)對(duì)象。

multiply(BigDecimal) 對(duì)象自身與參數(shù)相乘,然后返回這個(gè)對(duì)象。

divide(BigDecimal) 對(duì)象自身與參數(shù)相除,然后返回這個(gè)對(duì)象。

toString() BigDecimal對(duì)象的數(shù)值轉(zhuǎn)換成對(duì)應(yīng)的字符串。

doubleValue() BigDecimal對(duì)返回double值。

floatValue() BigDecimal對(duì)返回float。

longValue() BigDecimal對(duì)返回long值。

intValue() BigDecimal對(duì)返回int值。

三、java小數(shù)保留精度的舍入方式

1,java 常用的四舍五入法實(shí)現(xiàn):

Math類中的round方法不能設(shè)置保留幾位小數(shù),但可以乘100達(dá)到保留2位的目的:

Math.round(value*100)/100.0;

或者,直接用java.text.DecimalFormat指定保留幾位小數(shù),用哪幾種舍入法:

DecimalFormat decFormat = new DecimalFormat("#.00");
decFormat.setRoundingMode(RoundingMode.HALF_UP);

2,java的8種舍入方式:

1、 ROUND_UP:向上取整(丟掉小數(shù),整數(shù)加1) 遠(yuǎn)離零方向舍入。向絕對(duì)值最大的方向舍入,只要舍棄位非0即進(jìn)位。

2、ROUND_DOWN:向下取整(丟掉小數(shù))。趨向零方向舍入。向絕對(duì)值最小的方向輸入,所有的位都要舍棄,不存在進(jìn)位情況。

3、ROUND_CEILING:向正無窮方向走,始終不會(huì)減少計(jì)算值。如果 BigDecimal 為正,則舍入行為與 ROUND_UP 相同;如果為負(fù),則舍入行為與 ROUND_DOWN 相同。Math.round()方法就是使用的此模式。

4、ROUND_FLOOR:向負(fù)無窮方向舍入。向負(fù)無窮方向靠攏。若是正數(shù),舍入行為類似于ROUND_DOWN;若為負(fù)數(shù),舍入行為類似于ROUND_UP。

5、 HALF_UP:四舍五入,最近數(shù)字舍入(5進(jìn))。

6、 HALF_DOWN:四舍六入,最近數(shù)字舍入(5舍)。

7、 HAIL_EVEN:銀行家舍入法。四舍六入五偶舍。即舍棄位4舍6入,當(dāng)為5時(shí)看前一位,奇進(jìn)偶舍。向“最接近的”數(shù)字舍入,如果與兩個(gè)相鄰數(shù)字的距離相等,則向相鄰的偶數(shù)舍入。

也就是說,如果舍棄部分左邊的數(shù)字為奇數(shù),則舍入行為與 ROUND_HALF_UP 相同; 如果為偶數(shù),則舍入行為與 ROUND_HALF_DOWN 相同。

注意,在重復(fù)進(jìn)行一系列計(jì)算時(shí),此舍入模式可以將累加錯(cuò)誤減到最小。

8、ROUND_UNNECESSARY 斷言請(qǐng)求的操作具有精確的結(jié)果,因此不需要舍入。如果對(duì)獲得精確結(jié)果的操作指定此舍入模式,則拋出ArithmeticException。

到此這篇關(guān)于關(guān)于bigDecimal類的精度保留方法的文章就介紹到這了,更多相關(guān)bigDecimal精度保留內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Bean的實(shí)例化之屬性注入源碼剖析過程

    Spring Bean的實(shí)例化之屬性注入源碼剖析過程

    本篇文章主要就是分析Spring源碼剖析-Bean的實(shí)例化-屬性注入的相關(guān)知識(shí),通過本文學(xué)習(xí)AbstractAutowireCapableBeanFactory#populateBean 方法的主要功能就是屬性填充,感興趣的朋友跟隨小編一起看看吧
    2021-06-06
  • 多模塊的springboot項(xiàng)目發(fā)布指定模塊的腳本方式

    多模塊的springboot項(xiàng)目發(fā)布指定模塊的腳本方式

    該文章主要介紹了如何在多模塊的SpringBoot項(xiàng)目中發(fā)布指定模塊的腳本,作者原先的腳本會(huì)清理并編譯所有模塊,導(dǎo)致發(fā)布時(shí)間過長(zhǎng),通過簡(jiǎn)化腳本,只使用`mvn clean install`命令,可以快速發(fā)布指定模塊及其依賴的模塊
    2025-01-01
  • springboot中spring.profiles.include的妙用分享

    springboot中spring.profiles.include的妙用分享

    這篇文章主要介紹了springboot中spring.profiles.include的妙用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • springboot 如何使用jedis連接Redis數(shù)據(jù)庫(kù)

    springboot 如何使用jedis連接Redis數(shù)據(jù)庫(kù)

    這篇文章主要介紹了springboot 使用jedis連接Redis數(shù)據(jù)庫(kù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • springBoot快速訪問工程目錄下的靜態(tài)資源

    springBoot快速訪問工程目錄下的靜態(tài)資源

    springboot工程,是沒有webapp文件夾的,靜態(tài)文件放在src/main/resources/static文件夾下即可,模板文件放在src/main/resources/templates下,本文給大家介紹springBoot快速訪問工程目錄下的靜態(tài)資源的相關(guān)知識(shí),一起看看吧
    2021-06-06
  • Java如何接收XML格式參數(shù)并轉(zhuǎn)換為JSON

    Java如何接收XML格式參數(shù)并轉(zhuǎn)換為JSON

    在 Java 應(yīng)用程序中,處理 XML 數(shù)據(jù)并將其轉(zhuǎn)換為 JSON 格式是很常見的任務(wù),這篇文章為大家整理了一下具體的實(shí)現(xiàn)方法,希望對(duì)大家有所幫助
    2025-03-03
  • Activiti開發(fā)環(huán)境的搭建過程詳解

    Activiti開發(fā)環(huán)境的搭建過程詳解

    這篇文章主要介紹了Activiti開發(fā)環(huán)境的搭建過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • SpringBoot整合Apache Ignite的實(shí)現(xiàn)

    SpringBoot整合Apache Ignite的實(shí)現(xiàn)

    本文主要介紹了SpringBoot整合Apache Ignite的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • java線程池參數(shù)位置導(dǎo)致的奪命故障宿主機(jī)打不開

    java線程池參數(shù)位置導(dǎo)致的奪命故障宿主機(jī)打不開

    這篇文章主要為大家介紹了java線程池參數(shù)位置導(dǎo)致的奪命故障宿主機(jī)打不開的問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • java基于servlet實(shí)現(xiàn)文件上傳功能解析

    java基于servlet實(shí)現(xiàn)文件上傳功能解析

    這篇文章主要為大家詳細(xì)介紹了java基于servlet實(shí)現(xiàn)上傳功能,后臺(tái)使用java實(shí)現(xiàn),前端主要是js的ajax實(shí)現(xiàn),感興趣的小伙伴們可以參考一下
    2016-05-05

最新評(píng)論

罗江县| 句容市| 襄汾县| 沙坪坝区| 内丘县| 资溪县| 江华| 甘南县| 电白县| 拉孜县| 沙坪坝区| 班戈县| 璧山县| 旺苍县| 新田县| 盐津县| 淅川县| 汕尾市| 新丰县| 德保县| 东乡县| 平和县| 额济纳旗| 绥化市| 梁河县| 鹤壁市| 兰坪| 西华县| 岢岚县| 南川市| 肇源县| 永川市| 金坛市| 林周县| 多伦县| 安仁县| 衢州市| 仪陇县| 阿坝| 大理市| 靖州|