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

解決BigDecimal轉(zhuǎn)long丟失精度的問題

 更新時間:2020年12月04日 15:54:06   作者:昊Zz  
這篇文章主要介紹了解決BigDecimal轉(zhuǎn)long丟失精度的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

我就廢話不多說了,大家還是直接看代碼吧~

  public static void main(String[] args) {
    BigDecimal asdBigDecimal = new BigDecimal(56.33347);
    long sad = asdBigDecimal.longValue();
    double asda = asdBigDecimal.doubleValue();
    System.out.println(sad);
    System.out.println(asda);
  }

運行結(jié)果:

56

56.33347

而且BigDecimal.longValue()還會自動四舍五入,不想舍去小數(shù)點的朋友要用doubleValue()

補充知識:BigDecimal與int、long之間的相互轉(zhuǎn)換及基本數(shù)據(jù)類型知識掌握

(Java提供了兩個用于高精度計算的類:BigInteger和BigDecimal。這兩個類包含的方法、提供的操作與對基本類型所能執(zhí)行的操作相似,只不過是以方法調(diào)用方式取代運算符方式來實現(xiàn)。等于是用速度換取了精度。 BigInteger支持任意精度的整數(shù),在運算中可以準確地表示任何大小的整數(shù)值,而不會丟失任何信息。BigDecimal支持任何精度的定點數(shù),可以用它進行精確的貨幣計算。

它們都擴展Number類且實現(xiàn)Comparable接口,可以使用new BigInteger(String)或new BigDecimal(String)來創(chuàng)建實例,使用add,substract,multiple,divide和remainder方法完成算數(shù)運算,使用compareTo方法比較兩個大數(shù)字。

一般來說,BigInteger用的不是很多,BigDecimal用的稍微多一點,就比如說JDBC中,如果一個字段的數(shù)據(jù)庫類型是Number, 那么getObject().getClass()的結(jié)果是java.math.BigDecimal?! ?/p>

BigInteger相比Integer的確可以用big來形容。它是用于科學(xué)計算,Integer只能容納一個int, 所以最大值也就是2的31次訪減去1,十進制為2147483647,如果需要計算更大的數(shù),那么31位顯然是不夠用了,BigInteger能夠容納的位數(shù)那可就大了,我簡單試了一下,上千位沒有任何問題。除了容量大之外,BigInteger還封裝了一些常見的操作,比如+-*/的基本操作,還有絕對值,相反數(shù),最大公約數(shù),是否是質(zhì)數(shù)等等的運算。  

BigDecimal的實現(xiàn)利用到了BigInteger, 所不同的是BigDecimal加入了小數(shù)位的概念,比如BigDecimal d = new BigDecimal(new BigInteger(ib),5);5表示的是5個小數(shù)位。BigDecimal可以用來做超大的浮點數(shù)的運算,比如+-*/的運算,其中除法運算是最復(fù)雜的,因為商的位數(shù)還有除不斷的情況下末位小數(shù)點的處理都是需要考慮的。)

我們在實際開發(fā)過程中,BigDecimal是經(jīng)常用到的一個數(shù)據(jù)類型,它和int、long之間可以項目轉(zhuǎn)換。

int 轉(zhuǎn)換成 BigDecimal 數(shù)據(jù)類型

 //int 轉(zhuǎn)換成 bigDecimal類型
  public static void intToBigDecimal(){
    int b = 5;
    BigDecimal a = new BigDecimal(b);
    System.out.println(a +"的數(shù)據(jù)類型是"+a.getClass().getName());
  }

Long轉(zhuǎn)換成 BigDecimal 數(shù)據(jù)類型

 //Long 類型轉(zhuǎn)換成 bigDecimal
  public static void longToBigDecimal(){
    long b = 5;
    BigDecimal a = new BigDecimal(b);
    System.out.println(a +"的數(shù)據(jù)類型是"+a.getClass().getName());
  }

BigDecimal 轉(zhuǎn)換成 Long數(shù)據(jù)類型

 //bigDecimal 轉(zhuǎn)換成 Long類型
  public static void bigDecimalToLong(){
    BigDecimal b = new BigDecimal(12);
    Long c = b.longValue();
    System.out.println(c+"的數(shù)據(jù)類型是"+c.getClass().getName());
  }

BigDecimal 轉(zhuǎn)換成 int數(shù)據(jù)類型

  //bigDecimal 轉(zhuǎn)換成 int類型
    public static void bigDecimalToInt(){
      BigDecimal b = new BigDecimal(12);
      int c = b.intValue();
    }

附:基本數(shù)據(jù)類型及所占位數(shù)及初始值

基本數(shù)據(jù)類型 所占位數(shù) 初始值
byte 字節(jié)型 1字節(jié)(8bit) 0
short 短整型 2字節(jié)(16bit) 0
int 整型 4字節(jié)(32bit) 0
long 長整型 8字節(jié)(64bit) 0L
float 單精度浮點型 4字節(jié)(32bit) 0.0f
double 雙精度浮點型 8字節(jié)(64bit) 0.0d
boolean java未明確指出的大小(可能1bit、1byte、4byte) false
char 字符型 2字節(jié)(16bit) 空格

附:java的數(shù)據(jù)類型

附:轉(zhuǎn)換中的知識點

java中整數(shù)類型默認的int類型;小數(shù)類型默認的double;

*char 可以當做一中特殊的整數(shù)類型;
*int無法轉(zhuǎn)換為boolean;
*小數(shù)類型轉(zhuǎn)為整數(shù)類型,小數(shù)可能被舍棄,所有出現(xiàn)精度損失,所以需要強制轉(zhuǎn)換;
*boolean 類型不能轉(zhuǎn)換成任何其它數(shù)據(jù)類型;
byte b2 = 120;
//沒報錯的原因:
//編譯時候,進行檢查,看賦值大小是否超過變量的類型所容納的范圍
//如果超過,報錯:從int轉(zhuǎn)換到byte可能會有損失,如果沒超過,編譯通過
float f3 = 100L; 這種情況,整數(shù)部分,可以直接賦值給float整數(shù)部分
float f1 = 100.9; 這種情況,因為默認的是double,如果這樣轉(zhuǎn)換,有可能失去小數(shù)點,必須強制轉(zhuǎn)換
long l3 = 1000.9f; 小數(shù)轉(zhuǎn)為整數(shù),小數(shù)可能丟失,需要強制轉(zhuǎn)換
double d2 = 10.9d;
int i2 = d2; //錯誤: 不兼容的類型: 從double轉(zhuǎn)換到int可能會有損失
char c1 = 'a';
int i3 = c1; //自動轉(zhuǎn)換
int i4 = 100;
//char c2 = i4;// 錯誤: 不兼容的類型: 從int轉(zhuǎn)換到char可能會有損失

附:四則運算

/*
1、如果兩個操作數(shù)中有一個是double類型,另一個就會轉(zhuǎn)換為double類型;
2、否則,如果有一個操作數(shù)是float,另一個就會轉(zhuǎn)化為float;
3、否則,如果有一個操作數(shù)是long,另一個就會轉(zhuǎn)換為long;
4、否則,兩個操作數(shù)都將轉(zhuǎn)換為int類型。 
*/ 

附:面試陷阱

byte b1 = 10;
byte b2 = 11;
//錯誤: 不兼容的類型: 從int轉(zhuǎn)換到byte可能會有損失
//否則,兩個操作數(shù)都將轉(zhuǎn)換為int類型。
byte b3 = b1 + b2 //錯誤
byte b3 = (byte)(b1 + b2); //正確
short s1 = 1; 
s1 = s1 + 1; //錯誤: 不兼容的類型: 從int轉(zhuǎn)換到short可能會有損失
 
short s2 = 1; 
s2 += 1; // 等同于short s2 = (short)(s2 + (short)1); //正確

附:從小到大順序

附:隱式轉(zhuǎn)換、顯式轉(zhuǎn)換

當將占位數(shù)少的類型賦值給占位數(shù)多的類型時,java自動使用隱式類型轉(zhuǎn)換(如int型轉(zhuǎn)為long型)

當把在級別高的變量的值賦給級別低變量時,必須使用顯式類型轉(zhuǎn)換運算(如double型轉(zhuǎn)為float型)

附:什么是不可變對象

不可變對象指對象一旦被創(chuàng)建,狀態(tài)就不能再改變。任何修改都會創(chuàng)建一個新的對象,如String、Integer及其它包裝類。

以上這篇解決BigDecimal轉(zhuǎn)long丟失精度的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • JAVA基礎(chǔ)之控制臺輸入輸出的實例代碼

    JAVA基礎(chǔ)之控制臺輸入輸出的實例代碼

    下面小編就為大家?guī)硪黄狫AVA基礎(chǔ)之控制臺輸入輸出的實例代碼。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • Java自定義長度可變數(shù)組的操作

    Java自定義長度可變數(shù)組的操作

    這篇文章主要介紹了Java自定義長度可變數(shù)組的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • java并發(fā)編程實例分析

    java并發(fā)編程實例分析

    在本文里我們給大家分享了關(guān)于java并發(fā)編程實例分析以及相關(guān)知識點,需要的朋友們學(xué)習(xí)下。
    2019-03-03
  • SpringBoot攔截器實現(xiàn)項目防止接口重復(fù)提交

    SpringBoot攔截器實現(xiàn)項目防止接口重復(fù)提交

    基于SpringBoot框架來開發(fā)業(yè)務(wù)后臺項目時,接口重復(fù)提交是一個常見的問題,本文主要介紹了SpringBoot攔截器實現(xiàn)項目防止接口重復(fù)提交,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • IDEA中切換不同版本的JDK的詳細教程(超管用)

    IDEA中切換不同版本的JDK的詳細教程(超管用)

    這篇文章主要介紹了IDEA中切換不同版本的JDK的詳細教程(超管用),本文通過步驟詳解給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • Java使用定時器編寫一個簡單的搶紅包小游戲

    Java使用定時器編寫一個簡單的搶紅包小游戲

    這篇文章主要為大家介紹了Java如何使用定時器編寫一個簡單的搶紅包小游戲,文中的示例代碼講解詳細,感興趣的小伙伴可以嘗試一下
    2022-07-07
  • 深入解析Java中的編碼轉(zhuǎn)換以及編碼和解碼操作

    深入解析Java中的編碼轉(zhuǎn)換以及編碼和解碼操作

    這篇文章主要介紹了Java中的編碼轉(zhuǎn)換以及編碼和解碼操作,文中詳細解讀了編碼解碼的相關(guān)IO操作以及內(nèi)存使用方面的知識,需要的朋友可以參考下
    2016-02-02
  • Spring?Data?JPA實現(xiàn)審計功能過程詳解

    Spring?Data?JPA實現(xiàn)審計功能過程詳解

    Spring?Data?JPA為跟蹤持久性層的變化提供了很好的支持。通過使用審核,我們可以存儲或記錄有關(guān)實體更改的信息,例如誰創(chuàng)建或更改了實體以及何時進行更改
    2023-02-02
  • 深入講解SPI?在?Spring?中的應(yīng)用

    深入講解SPI?在?Spring?中的應(yīng)用

    這篇文章主要介紹了深入講解SPI在Spring中的應(yīng)用,SPI是Java內(nèi)置的一種服務(wù)提供發(fā)現(xiàn)機制,可以用來提高框架的擴展性,主要用于框架的開發(fā)中
    2022-06-06
  • 使用Criteria進行分組求和、排序、模糊查詢的實例

    使用Criteria進行分組求和、排序、模糊查詢的實例

    這篇文章主要介紹了使用Criteria進行分組求和、排序、模糊查詢的實例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評論

青阳县| 宁海县| 迁安市| 微博| 云龙县| 石河子市| 永城市| 水富县| 白城市| 东阳市| 顺义区| 陈巴尔虎旗| 临清市| 蚌埠市| 泰来县| 河间市| 方山县| 从化市| 山阴县| 商南县| 商河县| 双柏县| 尉氏县| 黔东| 醴陵市| 舟山市| 鹤峰县| 景德镇市| 微山县| 榆中县| 曲水县| 兴和县| 乐亭县| 琼中| 曲靖市| 太康县| 牙克石市| 达日县| 高邮市| 阳江市| 边坝县|