java : 乘以 2 双倍

java : multiplying 2 doubles

double multiply() 
{
 double x=(2/3)*3.14*1.02;
 System.out.print(x);

 double y=0.666*3.14*1.02; /*(2/3)=0.666...*/
 System.out.print(y);
}

输出: x=0.0 y=一些数字

请解释一下?

2/3 = 0 因为它们没有显式转换为 double 它们是整数。整个表达式变为:double x=0*3.14*1.02; 这是 0.

因为 2 和 3 的数据类型都是 int,而 int/int 给你的是 int,在你的情况下 2/3 是 0。 尝试使用 2.0/3 或 2/3.0 你会得到所需的答案。

在每个数字后缀 'd' 以确保您处理的是双打

(2/3) is 0.

因为都是整数。要解决此问题,请使用强制转换或明确说明您的数字不是整数:

double x=(2/3d)*3.14*1.02;

现在你有一个整数除以一个双精度数,得到一个双精度数。

阅读更多内容: http://www.mathcs.emory.edu/~cheung/Courses/170/Syllabus/04/mixed.html

(2/3) 首先计算(因为括号), 在整数算术中(因为数字文字的类型是 int)。小数部分被舍弃。

因此它是一个值为 0 的 int 类型。因此整个表达式为零。

显而易见的补救办法是去掉括号,改写 2.0 / 3.0。有些人更喜欢显式转换,但我觉得那很丑。