课程作业02——课程中的动手动脑问题
1.為什么double類型的數值進行運算得不到“數學上精確”的結果?
結論:使用double類型的數值進行計算,其結果是不精確的。
原因:double類型的數值占用64bit,即64個二進制數,除去最高位表示正負符號的位,在最低位上一定會與實際數據存在誤差(除非實際數據恰好是2的n次方)。我們給出的數值,在大多數情況下需要比64bit更多的位數才能準確表示出來(甚至是需要無窮多位),而double類型的數值只有64bit,后面舍去的位數一定會帶來誤差,無法得到“數學上精確”的結果。
2.解決精度問題可以使用使用BigDecimal類,但在構建BigDecimal對象時應使用字符串而不是double數值,否則,仍有可能引發計算精度問題解決方法
原因:double并不能準確的代表BigDecimal 16位有效數以上的數字在使用BigDecimal時創建對象。而BigDecimal所創建的對象不能使用+-*/等傳統的算術運算符直接對其對象進行數學運算,必須調用相對應的(f1.add(f2))等方法。 因為方法中的參數必須是BigDecimal的對象,所以定義時應為字符串。
3.以下代碼的輸出結果是什么?
結果:
原因:因為輸出的是字符串,在語句一中,“+”直接連接兩個字符,所以分別輸出100和200;而在語句二中,“+”先是進行數值類型的求和運算,再用字符串輸出兩個整形的和。
?
轉載于:https://www.cnblogs.com/wxd136/p/7634279.html
總結
以上是生活随笔為你收集整理的课程作业02——课程中的动手动脑问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用电线来传网络信号的黑科技?AirGig
- 下一篇: 《重构-改善既有代码设计》读书笔记-重构