【发布时间】:2018-11-12 19:24:35
【问题描述】:
如果我创建一个双变量并为其分配一个表达式,例如 (5d / 3d) 并显式转换为浮点数,例如,
double c = (float)(5d / 3d);
System.out.println(c);
输出:
1.6666666269302368
它应该给出浮点数据类型的精度,因为浮点小于双精度,所以双变量在存储浮点值时应该没有问题,但输出是荒谬的。为什么会这样?
请帮助我理解这段代码的输出。我无法理解代码中的这个输出。
【问题讨论】:
-
为什么输出很荒谬?你期待什么?
-
我预计输出应该是小数点后 7 位,即 1.6666666,这是浮点数据类型的精度。由于 float 小于 double 因此 double 变量存储最多 7 位的十进制数应该没有问题。这是我的想法,但似乎想法是错误的。