java:乘以2个双打

时间:2016-02-19 14:07:45

标签: java math numbers

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 = SomeNumber

请解释一下吗?

5 个答案:

答案 0 :(得分:2)

(2/3) is 0.

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

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

现在你有一个整数除以一个double,结果是double。

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

答案 1 :(得分:1)

首先计算

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

因此它是int类型,其值为0.因此整个表达式为零。

明显的补救措施是删除括号并改为编写2.0 / 3.0。有些人更喜欢明确的演员阵容,但我觉得很难看。

答案 2 :(得分:0)

double x=0*3.14*1.02;因为他们没有明确的演员来加倍他们是整数。整个表达式变为:{{1}} 这是0。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

将每个数字加上'd'以确保您正在处理双打