日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java浮点数运算

發布時間:2024/1/1 java 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java浮点数运算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

浮點數運算和整數運算相比,只能進行加減乘除這些數值計算,不能做位運算和移位運算。

在計算機中,浮點數雖然表示的范圍大,但是,浮點數有個非常重要的特點,就是浮點數常常無法精確表示。

舉個栗子:

浮點數0.1在計算機中就無法精確表示,因為十進制的0.1換算成二進制是一個無限循環小數,很顯然,無論使用float還是double,都只能存儲一個0.1的近似值。但是,0.5這個浮點數又可以精確地表示。

因為浮點數常常無法精確表示,因此,浮點數運算會產生誤差:

由于浮點數存在運算誤差,所以比較兩個浮點數是否相等常常會出現錯誤的結果。正確的比較方法是判斷兩個浮點數之差的絕對值是否小于一個很小的數:

// 比較x和y是否相等,先計算其差的絕對值: double r = Math.abs(x - y); // 再判斷絕對值是否足夠小: if (r < 0.00001) {// 可以認為相等 } else {// 不相等 }

浮點數在內存的表示方法和整數比更加復雜。Java的浮點數完全遵循IEEE-754標準,這也是絕大多數計算機平臺都支持的浮點數標準表示方法。

類型提升

如果參與運算的兩個數其中一個是整型,那么整型可以自動提升到浮點型:

需要特別注意,在一個復雜的四則運算中,兩個整數的運算不會出現自動提升的情況。例如:

double d = 1.2 + 24 / 5; // 5.2

計算結果為5.2,原因是編譯器計算24 / 5這個子表達式時,按兩個整數進行運算,結果仍為整數4。

溢出

整數運算在除數為0時會報錯,而浮點數運算在除數為0時,不會報錯,但會返回幾個特殊值:

  • NaN表示Not a Number
  • Infinity表示無窮大
  • -Infinity表示負無窮大

例如:

double d1 = 0.0 / 0; // NaN double d2 = 1.0 / 0; // Infinity double d3 = -1.0 / 0; // -Infinity

這三種特殊值在實際運算中很少碰到,我們只需要了解即可。

強制轉型

可以將浮點數強制轉型為整數。在轉型時,浮點數的小數部分會被丟掉。如果轉型后超過了整型能表示的最大范圍,將返回整型的最大值。例如:

int n1 = (int) 12.3; // 12 int n2 = (int) 12.7; // 12 int n2 = (int) -12.7; // -12 int n3 = (int) (12.7 + 0.5); // 13 int n4 = (int) 1.2e20; // 2147483647

如果要進行四舍五入,可以對浮點數加上0.5再強制轉型:

練習

根據一元二次方程ax 2+ b x + c = 0ax^2+bx+c=0ax2+bx+c=0的求根公式:

? b ±b 2? 4 a c2 a\frac{\displaystyle-b\pm\sqrt{b^2-4ac}}{\displaystyle2a}2a?b±b2?4ac

計算出一元二次方程的兩個解:

總結

以上是生活随笔為你收集整理的Java浮点数运算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。