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
请解释一下吗?
答案 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'以确保您正在处理双打