摘要:然而表示這個是的鍋,我不背。的表示一共的數(shù)字位能存儲個,表示存儲兩位小數(shù)。因為默認(rèn)是保留兩位小數(shù),超過了精度,所以保存近似值。大范圍低精度存儲。很準(zhǔn)確,采用科學(xué)計數(shù)法,損失精度,但能存儲更大范圍的數(shù)據(jù),但是精度有損失。
BigDecimal
為什么要使用這個呢?簡單點說就是商業(yè)要求精度計算,而double計算出來的結(jié)果,往往出人意料。
例子 Double運算結(jié)果是個這么個東西,這個是因為計算機(jī)中存儲浮點數(shù)是通過指數(shù)和尾數(shù)進(jìn)行表示的。
說簡單點就是二進(jìn)制無法準(zhǔn)確表示浮點數(shù),所以我們需要用BigDecimal。
BigDecimal運算我們再用BigDecimal進(jìn)行一遍計算,新建兩個BigDecimal對象,然后調(diào)用add方法進(jìn)行加操作。
什么?結(jié)果還是不對。
然而BigDecimal表示這個是Double的鍋,我不背。
因為Double本來的數(shù)據(jù)就是不準(zhǔn)確的,然后我們用一個不準(zhǔn)確的數(shù)據(jù)去構(gòu)造BigDecimal,肯定不對啊。
String既然Double不準(zhǔn)確,我們就用其String類型的構(gòu)造函數(shù)進(jìn)行初始化。
可下算對了,慶祝一下。
存儲 映射新建實體,測試一下Hibernate為我們映射成了數(shù)據(jù)庫中的什么屬性。
@Entity public class TestEntity { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private BigDecimal testDecimal; private Double testDouble; }
decimal的19表示一共的數(shù)字位能存儲19個,2表示存儲兩位小數(shù)。
Java | 數(shù)據(jù)庫 |
---|---|
BigDecimal | decimal |
Double | double |
存儲12345678.99。
沒什么說的,兩者存儲都沒什么壓力。
小范圍高精度存儲12345678.99999。
因為默認(rèn)decimal是保留兩位小數(shù),超過了精度,所以保存近似值。
大范圍低精度存儲1234567812345678.99。
decimal很準(zhǔn)確,double采用科學(xué)計數(shù)法,損失精度,但能存儲更大范圍的數(shù)據(jù),但是精度有損失。
大范圍高精度存儲1234567812345678.99999。
兩個都不準(zhǔn)確,想準(zhǔn)確,需要設(shè)置decimal為更高的精度。
總結(jié)Double因為某些情況下無法精確地表示浮點數(shù),所以我們需要使用BigDecimal進(jìn)行計算。
Double本來就不準(zhǔn)確,再去初始化BigDecimal肯定也不準(zhǔn)確,所以建議使用String類型的構(gòu)造方法。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/76758.html
摘要:除法的精度問題在使用的除法時,遇到一個鬼畜的問題,本以為的精度計算,結(jié)果使用返回,當(dāng)然最終發(fā)現(xiàn)還是自己的使用姿勢不對導(dǎo)致的,因此記錄一下,避免后面重蹈覆轍問題拋出在使用做高精度的除法時,一不注意遇到了一個小問題,如下上面的輸出是什么 showImg(https://segmentfault.com/img/remote/1460000015555232); BigDecimal除法的精...
摘要:文章鏈接精度計算精度計算目前接觸的業(yè)務(wù)中,對數(shù)據(jù)的精度要求比較高,因此不再使用基本的,改為用進(jìn)行存儲和相關(guān)的計算,端午前的這一篇博文,則簡單的介紹下的使用姿勢,早點回家早點放假基本使用構(gòu)造方法幾個常見的構(gòu)造方式,將基本類型等,轉(zhuǎn) showImg(https://segmentfault.com/img/remote/1460000015303995); 文章鏈接:https://liu...
摘要:返回的是是一個整數(shù)的最小值。筆記這個構(gòu)造函數(shù)的結(jié)果可能有些不可預(yù)測。這是因為不能像或者作為任何有限長度的二進(jìn)制分?jǐn)?shù)精確地表示。當(dāng)必須用作源為,注意,此構(gòu)造提供了一個精確的轉(zhuǎn)換它不會將轉(zhuǎn)換為使用方法,然后使用構(gòu)造函數(shù)相同的結(jié)果。 第三階段 JAVA常見對象的學(xué)習(xí) BigInteger和BigDecimal類 BigInteger類 (一) 構(gòu)造方法: //針對超過整數(shù)范圍的運算(整數(shù)最大...
摘要:成員方法類概述用于產(chǎn)生隨機(jī)數(shù)成員方法正則表達(dá)式相關(guān)方法判斷功能分割功能替換功能獲取功能和類的使用類概述包含一些有用的類字段和方法。注意它不能被實例化,因為此類構(gòu)造器是私有的成員方法類類概述表示特定的瞬間,精確到毫秒。 前言 我們都知道,JDK包含了JRE,而JRE中也提供了各種功能的java類,現(xiàn)在我們就對這些類有個簡單了解,然后靈活運用。 常用類:Object類/Scanner類,...
摘要:項目環(huán)境用于發(fā)送請求測試項目介紹這是一個商城項目,本來想起名叫項目,發(fā)現(xiàn)自己并沒有用。也是自己第一篇博客,記錄一下自己的學(xué)習(xí)過程,希望一方面能多做寫項目鍛煉能力,另一方面也讓自己在做完之后寫寫博客自己總結(jié)反思。 1.項目環(huán)境 IDEA15 spring4 mybatis3.4 mysql RestLet Client用于發(fā)送請求測試 2.項目介紹 這是一個商城項目,本來想起名叫SSM項...
閱讀 1255·2023-04-26 03:02
閱讀 1315·2023-04-25 19:18
閱讀 2662·2021-11-23 09:51
閱讀 2645·2021-11-11 16:55
閱讀 2701·2021-10-21 09:39
閱讀 1788·2021-10-09 09:59
閱讀 2083·2021-09-26 09:55
閱讀 3610·2021-09-26 09:55