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

問題

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

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

說明:js中使用的爲雙精度,java 不管單精度或者雙精度都沒法避免這個問題html

致使問題的緣由

  1. 關於二進制存儲的知識點擊查看
  2. 關於十進制如何轉換爲二進制點擊查看

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

解決方案

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

做者在進行商城設計的時候遇到的坑 修改成int 避免了這個問題 數據庫中的字段也都存儲分爲單位 避免精度問題github

原文地址 未經做者容許 請勿轉載,謝謝 :)數據庫

相關文章
相關標籤/搜索