日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

爭論不休的一個話題:金額到底是用Long還是BigDecimal?

來源: 責編: 時間:2024-04-15 18:16:43 211觀看
導讀在網上一直流傳著一個爭論不休的話題:金額到底是用Long還是用BigDecimal?這個話題一出在哪都會引起異常無比激烈的討論。。。。 比如說這個觀點:算錢用BigDecimal是常識圖片圖片有支持用Long的,將金額的單位設計為分,然后

在網上一直流傳著一個爭論不休的話題:金額到底是用Long還是用BigDecimal?這個話題一出在哪都會引起異常無比激烈的討論。。。。 比如說這個觀點:算錢用BigDecimal是常識w8T28資訊網——每日最新資訊28at.com

圖片圖片w8T28資訊網——每日最新資訊28at.com

圖片圖片w8T28資訊網——每日最新資訊28at.com

有支持用Long的,將金額的單位設計為分,然后乘以100,使用Long進行存儲以及計算,這樣不用擔心小數點問題。w8T28資訊網——每日最新資訊28at.com

阿里巴巴開發手冊.pngw8T28資訊網——每日最新資訊28at.com

但是在一些金融系統當中,對小數位要求比較高的,比如精確到小數點后6位,那么我們使用Long進行存儲,每次在計算時都要除以或者乘以1000000,那么計算的開銷就很大了。w8T28資訊網——每日最新資訊28at.com

并且,如果在需求確認時,我們無法知道金額要求的小數位,那我們使用Long也是不行的,我們并不知道需要乘以或者除以多少個0。w8T28資訊網——每日最新資訊28at.com

選擇BigDecimal

BigDecimal是Java提供的一個類,用于任意精度的算術運算。它的主要優點是提供了高精度的計算,這對于金融和貨幣計算來說是非常重要的。BigDecimal可以表示任意大小的正數、負數或零,并可以精確控制舍入行為。并且在數據庫中存儲時也有對應的類型進行匹配,比如MySQL的DECIMAL類型提供了精確的數值存儲,可以匹配BigDecimal的精度。w8T28資訊網——每日最新資訊28at.com

但是BigDecimal也有一些缺點:w8T28資訊網——每日最新資訊28at.com

  1. 1. 性能:與Long相比,BigDecimal的性能較差。因為它的運算需要更多的內存和CPU時間。
  2. 2. 復雜性:使用BigDecimal進行運算比使用Long或基本數據類型更復雜。你需要考慮舍入模式、精度等因素。
  3. 3. 在數據庫中需要更多的存儲空間來存儲小數部分。

而在Mysql的開發手冊中,建議金額需要進行小數位計算時,存儲要使用Decimal,否則我們要將金額乘以對應小數位的倍數變成BIGINT進行存儲。w8T28資訊網——每日最新資訊28at.com

Mysql開發手冊.pngw8T28資訊網——每日最新資訊28at.com

總結

基于上述對Long和BigDecimal的優缺點分析,我們可以得出以下結論:w8T28資訊網——每日最新資訊28at.com

在金額計算層面,即代碼實現中,推薦使用BigDecimal進行所有與金額相關的計算。BigDecimal提供了高精度的數值運算,能夠確保金額計算的精確性,避免了因浮點數精度問題導致的財務誤差。使用BigDecimal可以簡化代碼邏輯,減少因處理精度問題而引入的復雜性。w8T28資訊網——每日最新資訊28at.com

而在數據庫存儲方面,我們需要根據具體需求進行權衡。如果業務需求已經明確金額只需精確到分(如某些國家/地區的貨幣最小單位為分),并且我們確信不會涉及到需要更高精度的小數計算,那么可以使用Long類型進行存儲,將金額轉換為最小貨幣單位(如分)進行存儲。這樣可以節省存儲空間并提高查詢性能。w8T28資訊網——每日最新資訊28at.com

但是如果業務需求中金額的小數位數不確定,或者可能涉及多位小數的計算(如國際貨幣交易等),那么最好使用DECIMAL或NUMERIC類型進行存儲。這些類型提供了精確的數值存儲,可以確保數據庫中的數據與應用程序中的BigDecimal對象保持一致,避免數據轉換過程中可能引入的精度損失。w8T28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-83636-0.html爭論不休的一個話題:金額到底是用Long還是BigDecimal?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 面試官追問的STW,到底什么是STW?有什么影響?

下一篇: 2024 年了,Facebook、Google 竟然都不用 Git 管理代碼?

標簽:
  • 熱門焦點
  • 太卷!Redmi MAX 100英寸電視便宜了:12999元買Redmi史上最大屏

    8月5日消息,從小米商城了解到,Redmi MAX 100英寸巨屏電視日前迎來官方優惠,到手價12999元,比發布價便宜了7000元,在大屏電視市場開卷。據了解,Redmi MAX 100
  • 十個簡單但很有用的Python裝飾器

    裝飾器(Decorators)是Python中一種強大而靈活的功能,用于修改或增強函數或類的行為。裝飾器本質上是一個函數,它接受另一個函數或類作為參數,并返回一個新的函數或類。它們通常用
  • 如何通過Python線程池實現異步編程?

    線程池的概念和基本原理線程池是一種并發處理機制,它可以在程序啟動時創建一組線程,并將它們置于等待任務的狀態。當任務到達時,線程池中的某個線程會被喚醒并執行任務,執行完任
  • JVM優化:實戰OutOfMemoryError異常

    一、Java堆溢出堆內存中主要存放對象、數組等,只要不斷地創建這些對象,并且保證 GC Roots 到對象之間有可達路徑來避免垃 圾收集回收機制清除這些對象,當這些對象所占空間超過
  • 使用AIGC工具提升安全工作效率

    在日常工作中,安全人員可能會涉及各種各樣的安全任務,包括但不限于:開發某些安全工具的插件,滿足自己特定的安全需求;自定義github搜索工具,快速查找所需的安全資料、漏洞poc、exp
  • 得物寵物生意「狂飆」,發力“它經濟”

    作者|花花小萌主近日,得物宣布正式上線寵物鑒別,通過得物App內的“在線鑒別”,可找到鑒別寵物的選項。通過上傳自家寵物的部位細節,就能收獲擁有專業資質認證的得物鑒
  • iQOO Neo8系列新品發布會

    旗艦雙芯 更強更Pro
  • iQOO Neo8 Pro搶先上架:首發天璣9200+ 安卓性能之王

    經過了一段時間的密集爆料,昨日iQOO官方如期對外宣布:將于5月23日推出全新的iQOO Neo8系列新品,官方稱這是一款擁有旗艦級性能調校的作品。隨著發布時
  • DRAM存儲器10月價格下跌,NAND閃存本月價格與上月持平

    10月30日,據韓國媒體消息,自今年年初以來一直在上漲的 DRAM 存儲器的交易價格僅在本月就下跌了近 10%,此次是全年首次降價,而NAND 閃存本月價格與上月持平。市
Top 主站蜘蛛池模板: 敖汉旗| 许昌市| 炎陵县| 平遥县| 宿松县| 鹤峰县| 四川省| 昌乐县| 永宁县| 上杭县| 汉中市| 永春县| 璧山县| 鸡泽县| 江源县| 利辛县| 邹平县| 凤山市| 泰来县| 闸北区| 运城市| 盐津县| 蒙自县| 蓬溪县| 荆门市| 光泽县| 治多县| 莒南县| 福泉市| 德清县| 新绛县| 建始县| 皮山县| 磐安县| 金堂县| 景泰县| 政和县| 西峡县| 秦安县| 永宁县| 集贤县|