Java中儲存金額用什麼資料型別
Java面試高頻問題:你會用什麼資料型別來儲存金額?
如果這個時候你回答float,double那麼恭喜你,又可以省出時間來準備別的公司的面試了,當面試官說float,和double不行的時候你可能還一臉懵逼,為啥不行?那麼請看下面的例子
public class Test {
public static void main(String[] args) {
double a=0.03;
double b=0.02;
double c=a-b;
System.out.println(c);
}
}
結果會列印多少,大部分人肯定都在想結果肯定是0.01啊!如果覺得結果是0.01的同學可以動手在編輯器上實現並執行一下你會驚奇的發現結果居然是0.009999999999999998,因為float與double都是浮點數,浮點數參與的運算通常伴隨著因為無法精確表示而進行的近似或舍入,所以導致結果會有絲毫的偏差,而涉及金額的計算是絕對不予許存在偏差的。
我們可以使用BigDecimal來表示金額,或者是通過將金額的單位變小用整數來表示金額。
相關推薦
Java中儲存金額用什麼資料型別
Java面試高頻問題:你會用什麼資料型別來儲存金額? 如果這個時候你回答float,double那麼恭喜你,又可以省出時間來準備別的公司的面試了,當面試官說float,和double不行的時候你可能還一臉懵逼,為啥不行?那麼請看下面的例子 public class Tes
Java中8種基本資料型別及其預設值
Java語言中有8種基本資料型別,基本情況彙總如下: Java中8種基本資料型別總結 序號 資料型別 大小/位 封裝類 預設值 可表示資料
java中儲存mysql資料庫時間型別【date、time、datetime、timestamp】
在mysql中對於時間的儲存自己見表的時候都是設定的varchar型別的,感覺挺方便的。 昨天拿別人建好的表寫程式碼,發現這張表中時間型別為datetime的,憑感覺試了一下不行,網上查了剛開始試了好幾個都是不對的,一臉懵逼。 -----------------------
Java中八種基本資料型別佔用位元組空間總結
基本資料型別 所佔用空間大小 byte b; 1位元組 short s; 2位元組 int i; 4位元組 long l; 8位元組 char c; 2位元組(C語言中是1位元組) float f; 4位元組 double d; 8位元組 boo
Java中九種基本資料型別以及他們的封裝類
Java有兩種有效的資料型別 原始資料型別 引用資料型別 原始資料型別 Java支援8種原始資料型別。 位元組型(byte) 位元組型是一種8位的有正負的二進位制整數 最小值是-128 (-2^7) 最大值是127(2^7 - 1) 預設值是
java中的常見的資料型別(四類八種)
Java中的常見的資料型別: 整型:int: 值直接寫就可以了.long: 值後邊必須加L.浮點型(小數型別):float: 值後邊必須加F.double: 值後邊可以加D, 當然, 加不加都行,
java筆試題:關於short s1=1;s1=s1+1;short s1=1;s1+=1;short s3=s1+s2;中存在的簡單資料型別轉換問題的理解
面試題的內容大概是這樣:short s1=1;s1=s1+1;這兩句程式碼有什麼問題?short s1=1;s1+=1;這兩句程式碼有什麼問題?short s1=1,s2=1;short s3=s1+s2;這兩句程式碼有什麼問題? 下面我就對這三個問題按照自己的理解以及參考做出解釋: 解釋之
java:關於short s1=1;s1=s1+1;short s1=1;s1+=1;short s3=s1+s2;中存在的簡單資料型別轉換問題的理解
脫離了開發環境的提示,發現自己對有些java的基礎東西掌握的都不紮實,今天看到一個關於java資料型別轉換部分的面試題。 面試題的內容大概是這樣:short s1=1;s1=s1+1;這兩句程式碼有什麼問題?short s1=1;s1+=1;這兩句程式碼有什麼問題?shor
java中比較兩個double型別的資料大小
double a = 0.001; double b = 0.0011; BigDecimal data1 = new BigDecimal(a); BigDecimal data2 = new BigDecimal(b); data1.compareTo(data2)非整型數,運算由於精度問題,可能會有
java中你確定用對單例了嗎?
其它 safe 一個 with public 也會 sim data- 可見性 作為程序員這樣的特殊物種來說,都掌握了一種特殊能力就是編程思想,邏輯比較慎重,可是有時候總會忽略到一些細節,比方我,一直以來總認為Singleton是設計模式裏最簡單的,不用
java中方法調用在內存中的體現
壓入 ble borde dbo 才會 執行 lsp 過程 執行過程 在java中,方法以及局部變量(即在方法中聲明的變量)是放在棧內存上的。當你調用一個方法時,該方法會放在調用棧的棧頂。棧頂的方法是目前正在執行的方法,直到執行完畢才會從棧頂釋放。我們知道,棧是一種執行”先
Java入門第一課:資料型別
Java入門第一課:資料型別 文章目錄 Java入門第一課:資料型別 1. 科普類 2.資料型別 2.1整型 2.2浮點型別 2.3 char型別 2.4布林型別 2.5變數
java中從控制檯輸入資料和輸出資料到控制檯
1.從控制檯輸入資料 1.使用Scanner類來完成從命令列輸入資料到自己的程式中。 2.Scanner類是JDK1.5【jdk5.0】新增的一個開發類庫。 3.Scanner類使用 3.1先匯入Scanner類所在的程式包【java.util.Sca
【Redis】在java中的使用-存取string型別
我們知道,redis為非關係型資料庫,說明它也是一個數據庫。對其進行操作有兩個基本途徑: 客戶端redis-cli中的操作 在java程式碼中的使用 那今天我們就以存取string型別的資料為例來簡單說說使用。 客戶端中的操作
Java中的四種引用型別(強、軟、弱、虛)
為什麼需要不同的引用型別 從Java1.2開始,JVM開發團隊發現,單一的強引用型別,無法很好的管理物件在JVM裡面的生命週期,垃圾回收策略過於簡單,無法適用絕大多數場景。為了更好的管理物件的記憶體,更好的進行垃圾回收,JVM團隊擴充套件了引用型別,從最早的強引用型別增加到強、軟、弱、虛四個引用
一張圖教你看懂Java的八種基本資料型別
String和Integer不是Java的八種基本資料型別。char只能儲存一個字元(用單引號),String能夠儲存多個字元(用雙引號)。String屬於final類,定義的是物件,Integer 是 java 為 int 提供的封裝類。int 的預設值為 0,
演算法設計中常用的規律性資料型別轉換
案例一: 1/2 錯誤寫法: double a= 1/2 正確寫法: double a=1/2*1.0; 答案為0.5 案例二: 字元轉int &nbs
JS中5種原始資料型別
1.js中5種原始資料型別 number:整數/小數/NaN string: boolean: null:  
java中比較兩個double型別值的大小
非整型數,運算由於精度問題,可能會有誤差,建議使用BigDecimal型別,具體 BigDecimal的詳細說明參考jdk開發幫助文件。 import java.math.BigDecimal; public class DoubleCompare { public String co
Java之路:基本資料型別
基本資料型別 在Java中,資料型別一共分為兩大類:基本資料型別、引用資料型別。由於引用資料型別較難理解,所以在此先介紹基本資料型別。 基本資料型別由Java語言定義,不可以再進行劃分。基本資料型別的資料佔用記憶體的大小固定,在記憶體中存入的是數值本身,而引用資料型別在記憶體中存入的