BigDecimal 在資金計算時正確使用姿勢
1. BigDecimal可以接受數字和String型別,為保證精確性應使用String型別
當我們用double型別的資料作為引數時,構造出的BigDecimal 物件value1並不能保證資料的準確性。 而用String作為引數時構造物件時,資料的準確性是有保證的。
public void constructTest(){
BigDecimal value1 =new BigDecimal(10.511);
System.out.println("value1: " + value1);
BigDecimal value2 = new BigDecimal("10.511");
System.out.println("value2: " + value2);
}
result:
value1: 10.510999999999999232613845379091799259185791015625
value2: 10.511
2.BigDecimal 不可變性
BigDecimal 和String 一樣具有物件不可變行,一旦賦值就不會再變
BigDecimal 和String 一樣具有物件不可變行,一旦賦值就不會再變。
public void immutableTest() {
BigDecimal count = new BigDecimal("1.3");
count.add( new BigDecimal("9.2"));
System.out.println("count:" + count);
}
count:1.3
執行程式碼會發現count不是預期的10.5,還是初始的賦值1.3
3.計算錢有關的 bean屬性都宣告為BigDecimal
BigDecimal money = new BigDecimal(455099051455.97);
BigDecimal invest = new BigDecimal(444198102911.940);
BigDecimal investMoneys =money.subtract(invest);
System.out.println("老方法1:"+investMoneys.setScale(0, BigDecimal.ROUND_DOWN));
System.out.println("老方法:"+investMoneys.intValue());
老方法1:10900948544
老方法:-1983953344
第一個算的是對的,第二個算的是錯
要取整的時候用setScale(0,BigDecimal.ROUND_DOWD)保留零位小數,後邊的都舍掉
相關文章
- 在vscode使用editorconfig的正確姿勢VSCode
- Postman 正確使用姿勢Postman
- TiDB 的正確使用姿勢TiDB
- Redis的正確使用姿勢Redis
- 開發函式計算的正確姿勢 —— 排查超時問題函式
- 使用快取的正確姿勢快取
- laravel 使用 es 的正確姿勢Laravel
- 使用列舉的正確姿勢
- Java日誌正確使用姿勢Java
- 在Vue中使用JSX的正確姿勢(有福利)VueJS
- 開發函式計算的正確姿勢 —— 爬蟲函式爬蟲
- 原始碼|使用FutureTask的正確姿勢原始碼
- 虛幻私塾的正確使用姿勢
- Spring Boot使用AOP的正確姿勢Spring Boot
- 使用 react Context API 的正確姿勢ReactContextAPI
- Swift中使用Contains的正確姿勢SwiftAI
- npm run dev 的正確使用姿勢NPMdev
- 開發函式計算的正確姿勢——OCR 服務函式
- 開發函式計算的正確姿勢——使用 brotli 壓縮大檔案函式
- 開發函式計算的正確姿勢——執行 Selenium Java函式Java
- GIT使用rebase和merge的正確姿勢Git
- 中國菜刀使用(實戰正確姿勢)
- mysqljs在koa2中的正確姿勢MySqlJS
- 在 JavaScript 中建立陣列的正確姿勢JavaScript陣列
- git commit 的正確姿勢GitMIT
- 開發函式計算的正確姿勢——使用互動模式安裝依賴函式模式
- [Angular]在Angular中和DOM打交道的正確姿勢Angular
- 在React ClassComponent中繫結方法的正確姿勢React
- 在Flutter中嵌入Native元件的正確姿勢是...Flutter元件
- 提意見的正確"姿勢"
- 擼.NET Core的正確姿勢
- Homestead 開啟mongodb正確姿勢MongoDB
- 開啟Git的正確姿勢Git
- 玩轉 Ceph 的正確姿勢
- Go 1.16 io/fs 設計與實現及正確使用姿勢Go
- 【通俗易懂】JWT-使用的可能正確姿勢JWT
- 正確姿勢使用vue cli3建立專案Vue
- “5Why分析法”的正確使用姿勢