当我在Java中使用双精度除法将317除以219时,得到的结果为1。
例如:
double b = 317/219;
System.out.println(b);
输出结果为:1。
这是因为它是一个循环小数吗? 不得不使用BigDecimal,这很烦人。
试一试
double b = 317/219D;
Java中编码数字的默认类型是int
,所以根据您的代码,Java正在处理两个int
数字,除法的结果也将是int
类型。由于这是一个宽化转换(源类型保证“适合”目标类型),因此将该int 1
结果从int
强制转换为double 1
不会触发编译器警告。
通过将其中任一数字编码为带有尾随D
的double
(也可以使用d
,但我总是使用大写字母,因为小写字母L
看起来像1
),除法的结果也将是double
。
(double) (317 / 219)
,但是当它像这样被写出来时,显然不会达到你想要的效果。如果你使用(double)a/b
,那么就可以得到你想要的结果(转换具有比除法更高的优先级,所以它被解释为((double)a)/b
,在某些语言中不是这种情况)。 - anonAnother alternative...
double b = (double)317/219;
double b = 317.0/219.0;
。double b = 1.0D;
这是一个关于 int
类型的除法。请写出:
double b = 317.0/219;
System.out.println(b);
由于您输入的数字是整数,因此答案也是整数。
要获得双精度浮点数,您需要使用带有浮点数的数字或将您使用的整数之一强制转换为浮点数:
double b = 317.0/219;
System.out.println(b);
或者:
double b = ((double)317)/219;
System.out.println(b);
你可以尝试一下
double b = 0.0;
b = 317/219;
这样我就可以返回小数点。