Groovy 會自動把10.5 這樣的的小數值自動裝箱(Autobox)成java.math.BigDecimal
而非你想當然的java.lang.Float或java.lang.Double類型。
為什麼要這樣舉個大多數Java開發者都沒有意識到的一個慘通例子:
寫一個簡短的Java應用,循環10 次,每次都加上0.1。
你最終會得到0.99999或1.000001,這要看你是存成Double還是Float。
使用BigDecimal,你將會每次都得到1.0,和預期的一模一樣。
這就是(The Principle of Least Surprise)。
其它文章
留言列表