在Java中除法双打时的奇怪行为
当我在Java中使用双精度将317除以219时,我得到1。
例如:
double b = 317/219;
System.out.println(b);
输出为:1。
这是因为它是重复出现的小数吗?不得不使用BigDecimal来代替,这很烦人。
当我在Java中使用双精度将317除以219时,我得到1。
例如:
double b = 317/219;
System.out.println(b);
输出为:1。
这是因为它是重复出现的小数吗?不得不使用BigDecimal来代替,这很烦人。
试试这个
double b = 317/219D;
java中编码数字的默认类型是 ,因此使用您拥有的代码,java正在使用两个数字,然后除法的结果也将是,这将截断小数部分以提供的最终结果。然后,此结果将从不带编译器警告的 强制转换为 a,因为它是一种加宽强制转换(源类型保证“适合”目标类型)。int
int
int
1
int
int 1
double 1
通过将任何一个数字编码为尾随(您也可以使用,但我总是使用大写字母,因为小写看起来像a),除法的结果也将如此。double
D
d
L
l
1
double
另一种选择...
double b = (double)317/219;