開發中遇到的float double精度問題

SeeMoonUp發表於2017-12-14

問題

javascript java中小數進行算術運算存在精度問題

  1. 在js中的體現 2.32 * 100 = 231.99999999999997
  2. 在java中的體現
    2.32d * 100 = 231.99999999999997
    0.15f * 100 = 15.000001
    複製程式碼

說明:js中使用的為雙精度,java 無論單精度或者雙精度都無法避免這個問題

導致問題的原因

  1. 關於二進位制儲存的知識點選檢視
  2. 關於十進位制如何轉換為二進位制點選檢視

ps: 第一篇博文中存在一點計算問題 即8.25,用二進位制的科學計數法表示為:1.00001*2^3,原文作者少寫一個0

解決方案

對於這個現象 只能根據自己的業務需求,來進行靈活的變通

作者在進行商城設計的時候遇到的坑 修改為int 避免了這個問題 資料庫中的欄位也都儲存分為單位 避免精度問題

原文地址 未經作者允許 請勿轉載,謝謝 :)

相關文章