Java 中浮点数和双精度的包含范围是多少?

2022-09-01 13:41:56

Java 中浮点数和双精度的包含范围是多少?

为什么不建议对精度至关重要的任何事情使用浮点数或双精度?


答案 1

Java的基元数据类型

布尔值:1 位。可能只接受真值和假值。

字节:1 个有符号字节(2 的补码)。涵盖从 -128 到 127 的值。

short:2 个字节,有符号(二进制补码),-32,768 到 32,767

int:4 个字节,有符号(2 个补码)。-2,147,483,648 至 2,147,483,647。

long:8 个字节签名(2 个补码)。范围从 -9,223,372,036,854,775,808 到 +9,223,372,036,854,775,807。

浮点数:4 个字节,IEEE 754。范围从 1.40129846432481707e-45 到 3.40282346638528860e+38(正或负)。

双精度:8 字节 IEEE 754。范围从 4.94065645841246544e-324d 到 1.79769313486231570e+308d(正数或负数)。

char: 2 字节, 无符号, Unicode, 0 到 65,535


答案 2

Java 的 Double 类的成员包含该类型的 Min 和 Max 值。

2^-1074 <= x <= (2-2^-52)·2^1023 // where x is the double.

查看 的 静态最终成员。Min_VALUEMAX_VALUEDouble

(一些)人们会建议不要对准确性和精确度至关重要的事情使用浮点类型,因为舍入误差可能会以可测量的(小)量来甩掉计算。