sách gpt4 ai đã đi

Tại sao phải chỉ định L cho long, F, D cho float, double?

In lại 作者:塔克拉玛干 更新时间:2023-11-03 03:05:33 30 4
mua khóa gpt4 Nike

这里有几个相关的问题。

根据标题,如果我们将变量类型指定为 long 或 float、double,为什么它是一个要求?编译器不会在编译时评估变量的类型吗?

Java 将所有整型文字视为 số nguyên - 这是为了减轻无意内存浪费的影响吗?所有浮点文字都是gấp đôi - 以确保最高精度?

1 Câu trả lời

当你有一个常量时,看起来相同但实际上不同的值之间存在细微差别。此外,由于引入了自动装箱,您会得到与 less 截然不同的结果。

考虑将 0.1 乘以 0.1 作为 float 或 double 并转换为 float 会得到什么。

float a = (float) (0.1 * 0.1);
float b = 0.1f * 0.1f;
System.out.println("a= "+new BigDecimal(a));
System.out.println("b= "+new BigDecimal(b));
System.out.println("a == b is " + (a == b));

打印

a= 0.00999999977648258209228515625
b= 0.010000000707805156707763671875
a == b is false

现在比较使用 trôi nổi hoặc số nguyên 执行计算时得到的结果。

float a = 33333333f - 11111111f;
float b = 33333333 - 11111111;
System.out.println("a= "+new BigDecimal(a));
System.out.println("b= "+new BigDecimal(b));
System.out.println("a == b is " + (a == b));

打印

a= 22222220
b= 22222222
a == b is false

比较số nguyêndài

long a = 33333333 * 11111111; // overflows
long b = 33333333L * 11111111L;
System.out.println("a= "+new BigDecimal(a));
System.out.println("b= "+new BigDecimal(b));
System.out.println("a == b is " + (a == b));

打印

a= -1846840301
b= 370370362962963
a == b is false

比较 gấp đôidài

double a = 333333333333333333L / 333333333L;
double b = 333333333333333333D / 333333333D;
System.out.println("a= "+new BigDecimal(a));
System.out.println("b= "+new BigDecimal(b));
System.out.println("a == b is " + (a == b));

打印

a= 1000000001
b= 1000000000.99999988079071044921875
a == b is false

总而言之,可以构造一种情况,其中使用 số nguyên,dài,gấp đôi hoặc trôi nổi 将产生与使用另一种类型相比,结果不同。

关于java - 必须指定 L 表示 long、F、D 表示 float、double 的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7522901/

30 4 0
Bài viết được đề xuất: Java 双下划线符号是做什么用的?
Bài viết được đề xuất: python - 为另一个数组中的所有 float 查找数组中最接近的 float
Bài viết được đề xuất: java - 如何刷新 'RandomAccessFile' (java)?
Bài viết được đề xuất: algorithm - 为什么霍夫曼编码好?
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com