1.double类型
Java 提供了double处理实数(小数)的类型。它占用8 bytes内存(是类型的两倍int)并且可以存储范围从到的值。为了进行比较:该类型可以存储从到范围内的值。-1.7*10308+1.7*10308int-2*109+2*109
在实数中,小数部分写在小数点后。例如,123.456,或 2.5,或 100.00,或 0.01。当计算机处理这样的数字时,我们称它们为浮点数。
顺便说一下,除了类型double,我们还有float类型(只有 4 个字节)。它的名字来自浮点数。这个名字double来自double float。Adouble是 a 的两倍float:8 bytes与4. 它也被称为双精度浮点数。
2.创建double类型
双精度类型用于存储实数。要在代码中创建一个可以存储实数的变量,您需要使用如下语句:
double name;
double类型
其中name是变量的名称。例子:
| 陈述 | 描述 |
|---|---|
|
price创建一个真正的变量 |
|
weight创建一个真正的变量 |
|
lightSpeed创建一个真正的变量 |
与int类型一样,您可以使用速记同时创建多个double变量:
double name 1, name 2, name 3;
double变量
甚至立即为它们赋值:
double name 1 = value 1, name 2 = value 2, name 3 = value 3;
double变量
例子:
| 陈述 | 笔记 |
|---|---|
|
变量存储5.0 |
|
变量存储2.0 |
|
3.分配整数和实数
如果整数只能分配给int变量,而实数只能分配给double变量,那就太糟糕了。我们希望能够在两种数字之间进行转换。而Java提供了这种能力。
首先,实数和整数都可以分配给double变量。分配整数时,只需将它们转换为实数。当然,在此过程中可能会损失一些准确性。
| 陈述 | 笔记 |
|---|---|
|
变量存储5.0 |
|
变量存储2.0 |
|
变量 x存储1000000.0 |
其次,如果某个表达式中涉及整数和实数,则先将整数转换为实数,然后再与另一个实数进行运算。
| 陈述 | 笔记 |
|---|---|
|
变量 x存储5000.0 |
|
号码10会显示在屏幕上 |
|
号码10.0会显示在屏幕上 |
最后,还可以将实数分配给int变量。当我们这样做时,实数的小数部分被丢弃——数字被向下舍入到最接近的整数。
此外,编译器要求程序员明确记录正在发生的事情(以确保其他程序员理解小数部分被丢弃)。一般来说,这样的转换在代码中看起来像这样:
integer_variable = (int)(real_number);
int变量
例子:
| 陈述 | 笔记 |
|---|---|
|
变量x存储5 |
|
变量x存储5 |
|
变量x存储11 |
4. Java 整数与实数相除
当一个整数除以一个整数时,总是舍弃余数。那我们怎么除以5得到2呢2.5?
乍一看,正确的选择似乎是:
double d = 5 / 2;
但这不是那么简单。这里的问题是 Java 机器首先计算 的值5 / 2,然后才将结果赋值给d变量。并且5 / 2操作是整数除法。这意味着d 将包含2,或者更准确地说,2.0
正确的解决方法是至少把除法中涉及的一个数写成实数(即带小数点):
double d = 5.0 / 2;
double d = 5 / 2.0;
double d = 5.0 / 2.0;
在每个表达式中,d 将包含2.5
但是如果我们使用变量呢?如果我们有这样的代码怎么办?:
int a = 5;
int b = 2;
double d = a / b;
这里有一个巧妙(且显而易见)的解决方案——强制 Java 机器将变量转换为实数,方法是将变量乘以一个实数 ( 1.0)
int a = 5;
int b = 2;
double d = a * 1.0 / b;
请注意,乘法和除法具有相同的优先级,并且从左到右执行。这意味着我们在哪里乘以 1.0 很重要。
例子:
| 陈述 | 执行顺序 | 结果 |
|---|---|---|
|
(1.0 * a) / b; |
2.5 |
|
(a * 1.0) / b; |
2.5 |
|
(a / b) * 1.0; |
2.0 |
GO TO FULL VERSION