Java 理解 Math.getExponent(Double)

Pau*_*l-E 6 java number-formatting

Double dble = new Double("2.2737367544323201e-13");
int exponent = Math.getExponent(dble);
Run Code Online (Sandbox Code Playgroud)

我有上面的代码,指数的值为“-43”。当传递的双精度值包含“-13”时,我不确定指数是“-43”。有人可以对这个 API 有所了解吗?

Era*_*ran 6

Math.getExponent()返回数字的二进制表示的指数。在您的示例中,-13 是十进制表示的指数,-43 是二进制表示的指数。

例如,

System.out.println (Math.getExponent (1024));
Run Code Online (Sandbox Code Playgroud)

印刷

10
Run Code Online (Sandbox Code Playgroud)

自从

1024 = 2 ^ 10
Run Code Online (Sandbox Code Playgroud)

所以指数是10。

System.out.println (Math.getExponent (1.0/8192));
Run Code Online (Sandbox Code Playgroud)

将打印

-13
Run Code Online (Sandbox Code Playgroud)

自从

1.0/8192 = 2 ^ (-13)
Run Code Online (Sandbox Code Playgroud)