Java中float和double的包含范围是多少?

为什么不建议在精度至关重要的情况下使用 float 或 double?

有帮助吗?

解决方案

Java的 Double 类有包含的类型的最小和最大值的成员。

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

检查出Min_VALUEMAX_VALUE Double的静态最终成员。

(一些)的人会建议不要使用浮点类型的东西,其中准确度和精度是至关重要的,因为舍入误差可以通过可测量(少量)甩开计算。

其他提示

Java的基本数据类型

布尔: 1位。可以采取的值真假仅

字节: 1符号字节(补)。覆盖值从-128到127。

短: 2个字节,符号(2的补码),-32,768至32,767

INT: 4个字节,符号(2的补数)。 2,147,483,648到2,147,483,647。

长: 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(正或负)。

炭: 2个字节,无符号的Unicode,0至65535

二进制浮点数具有令人感兴趣的特性精确,因为该值被存储为上升到二进制功率的二进制整数。当与子整数值处理(即,0和1之间的值),两个负幂十的负权“四舍五入”非常不同。

例如,数字0.1可以通过1×10 -1 表示,但没有碱-2指数和尾数,可以精确地表示0.1的组合 - 你的最接近的是0.10000000000000001。

因此,如果你有你在哪里使用值工作像0.1或0.01的大量的应用程序,但其中的小(小于0.000000000000001%)的错误是不能容许,那么二进制浮点数字是不适合你。

相反,如果10的幂都没有“特殊”到你的应用程序(十权力是货币计算很重要,但不是在,比方说,物理的大多数应用程序),那么你实际上是最好使用二进制浮点的,因为它通常是至少大小更快的顺序,它是更有效的存储器

从Python文档上浮点问题和限制也非常出色在一个简单的解释这个问题理解的形式。维基百科也有浮点解释表示背后的数学。

基元数据类型:

  • float:float 数据类型是单精度32位IEEE 754浮点。它的价值范围超出了讨论的范围,但在部分中指定 4.2.3Java 语言规范。与建议 byteshort, , 用一个 float (代替 double)如果您需要在大量的浮点数中保存内存。该数据类型绝不应用于精确值,例如货币。为此,您需要使用 java.math.BigDecimal类代替。 数字和字符串 盖子 BigDecimal 以及Java平台提供的其他有用类。

  • double: :这 double 数据类型是双精度64位IEEE 754浮点。它的价值范围超出了讨论的范围,但在部分中指定 4.2.3Java 语言规范。对于十进制值,此数据类型通常是默认选择。如上所述,该数据类型绝不应用于精确值,例如货币。

有关值的范围,请参阅部分 4.2.3 浮点类型、格式和值 JLS 的。

当然你可以使用浮点或双精度的“关键”的东西的...许多应用程序做什么,但使用这些数据类型紧缩的数字。

您可能会误解一些关于浮点数,各种注意事项的,如建议从来没有的比较为精确的相等时,等等。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top