Mar*_*ner 12
如果我没有完全错误,35/4总是评估为8.即使在
double result = 35 / 4;
Run Code Online (Sandbox Code Playgroud)
你会得到这个结果(双,即8.0).这是因为35并且4都是整数,因此应用整数除法.表达式首先计算为整数,只将结果转换为double值.
另一方面,如果你想要正确的结果,8.75你将不得不写
double result = 35. / 4;
Run Code Online (Sandbox Code Playgroud)
为了强制应用浮点除法.顺便说一句,这是一个常见的陷阱.
当然,如果你有双重值,比如
double a = 35;
double b = 4;
Run Code Online (Sandbox Code Playgroud)
您需要明确地转换为int或使用Math.floor()之前帖子中的建议.
Boz*_*zho 10
使用
Math.floor(..)
Run Code Online (Sandbox Code Playgroud)
返回小于或等于参数且等于数学整数的最大(最接近正无穷大)double值.
或者,如果你需要操纵整数而不是双精度,那么只需分配给int:
int a = 35 / 4;
Run Code Online (Sandbox Code Playgroud)
实际上,如果您直接使用数字或使用int变量,您将int自动获得结果.
| 归档时间: |
|
| 查看次数: |
334 次 |
| 最近记录: |