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。有些人更喜欢显式转换,但我觉得那很丑。
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。有些人更喜欢显式转换,但我觉得那很丑。