要返回一个double,即使类型是double,我是否必须转换为double?
例如
double a = 32.34;
double b = 234.24;
double result = a - b + 1/12 + 3/12;
Run Code Online (Sandbox Code Playgroud)
我必须投(双)?
Jon*_*eet 19
不,你没有.但是,你的表达几乎肯定不会达到你想要的效果.
表达式1/12和3/12将使用整数运算来执行.
你可能想要:
double result = a - b + 1/12d + 3/12d;
Run Code Online (Sandbox Code Playgroud)
要么
double result = a - b + 1/(double) 12 + 3/(double) 12;
Run Code Online (Sandbox Code Playgroud)
这两个都将强制使用浮点运算执行除法.
这里的问题是,如果算术运算符的两个操作数都是整数,那么操作是使用整数运算执行的,即使它是类型的更大表达式的一部分double
.在这里,你的表达是有效的:
double result = a - b + (1 / 12) + (3 / 12);
Run Code Online (Sandbox Code Playgroud)
加法和减法是可以的,因为它们的类型a
和b
强制它们使用浮点运算来执行 - 但是因为除"加法和减法"之间的"绑定"更紧密(即,就像使用上面的括号一样),只考虑立即操作数.
那有意义吗?
编辑:由于它如此受欢迎,在这里包含devinb的评论也是有道理的:
double result = a - b + 1.0/12.0 + 3.0/12.0;
Run Code Online (Sandbox Code Playgroud)
就编译器而言,这是完全相同的 - 你只需要决定哪个更清楚:
(double) 1
1.0
1d
Run Code Online (Sandbox Code Playgroud)