浮點運算 NaN Infinaty

2021-08-31 02:13:39 字數 2184 閱讀 8696

jls 4.2.4 p40

1 gradual underflow:精度不能滿足,導致下溢。

2 round toward zero:從浮點強轉成整型的時候向零看趨近,找到最接近的整數。

3 0.0/0.0 is not-a-number。

4 比較運算子 <.<=,>,>=返回false,只要有乙個運算元是nan。

5 對於== 運算子,只要有乙個運算元是nan,返回false。

6 對於 != 運算子,只要有乙個運算元是nan,返回true。

7 當且僅當x 是nan的時候,x != x 為 true 

8 如果x或者y是nan,(x < y) == !(x >= y ) 返回false

package arkblue.lang;

public class floattest

system.out.println();

// another example of inexact results and rounding:

system.out.print("inexact results with double:");

for (int i = 0; i < 100; i++)

system.out.println();

// an example of cast to integer rounding:

system.out.print("cast to int rounds toward 0: ");

d = 12345.6;

system.out.println((int) d + " " + (int) (-d));

system.out.println(1.0 / -0); // infinity

system.out.println(1.0d / -0); // infinity

system.out.println(1.0 / 0); // infinity

system.out.println(1.0d / 0); // infinity

system.out.println(0.0 / 0); // nan

system.out.println((1.0d / 0 * 0) != (0.0d / 0)); // true

system.out.println((1.0d / 0) != (0.0d / 0)); // true

system.out.println((1.0d / 0 * 0) == (0.0d / 0)); // false

system.out.println((1.0d / 0 * 0) > (0.0d / 0)); // false

system.out.println((1.0d / 0 * 0) >= (0.0d / 0)); // false

system.out.println((1.0d / 0 * 0) < (0.0d / 0)); // false

system.out.println((1.0d / 0 * 0) <= (0.0d / 0)); // false

double x = double.nan;

double y = 0.0;

system.out.println((x < y) == !(x >= y));

}}

結果:

overflow produces infinity: 1.0e308*10==infinity

gradual underflow: 3.141592653589793e-305

3.1415926535898e-310 3.141592653e-315 3.142e-320 0.0

0.0/0.0 is not-a-number: nan

inexact results with float: 0 41 47 55 61 82 83 94 97

inexact results with double: 0 49 98

cast to int rounds toward 0: 12345 -12345

infinity

infinity

infinity

infinity

nantrue

true

false

false

false

false

false

ARM 浮點運算,軟浮點,硬浮點

很多時候我們要處理的資料,不僅僅是整數和字串,還有浮點數即小數。在多 資料處理方面表現的更多。是不是所有的cpu都支援,浮點運算呢?答案 不是。我們常常聽到贏浮點和軟浮點,這些到底說的是什麼呢?下面我們就來一 竟吧。在這裡我們說的是arm核浮點運算。1 硬浮點 hard float 編譯器將 直接編...

ARM 浮點運算

很多時候我們要處理的資料,不僅僅是整數和字串,還有浮點數即小數。在多 資料處理方面表現的更多。是不是所有的cpu都支援,浮點運算呢?答案 不是。我們常常聽到贏浮點和軟浮點,這些到底說的是什麼呢?下面我們就來一 竟吧。在這裡我們說的是arm核浮點運算。1 硬浮點 hard float 編譯器將 直接編...

ARM 浮點運算

很多時候我們要處理的資料,不僅僅是整數和字串,還有浮點數即小數。在多 資料處理方面表現的更多。是不是所有的cpu都支援,浮點運算呢?答案 不是。我們常常聽到贏浮點和軟浮點,這些到底說的是什麼呢?下面我們就來一 竟吧。在這裡我們說的是arm核浮點運算。1 硬浮點 hard float 編譯器將 直接編...