我刚注意到我的表达方式如
double x = 60/21
返回错误的值。
我发现这是因为60和21是整数。我应该使用
double x = 60.0/21.0
有没有办法解决为每个整数添加.0
以获得准确结果的需求?
基本上我不想将小数点添加到我的代码中的每个整数。我希望double x = 60/21
始终被视为double x = 60.0/21.0
有没有办法做到这一点?
更新 谢谢你的回答
答案 0 :(得分:1)
不,这不是一个更好的方法。 (您可以添加cast,但这与在文字值的末尾添加.0
并没有什么不同。计算机完全按照你的要求去做,所以你必须具体。
答案 1 :(得分:1)
如何将表达式中的所有整数视为双精度?有没有办法做到这一点?
简短的回答:没有。 Java语言没有提供任何可以改变语言转换表达式中值的固有规则的机制。
如果希望Java表达式对积分操作数使用double
算术,则需要显式转换它们。
最接近你想要的就是编写一个预处理器来分析你的Java源代码并在适当的位置插入转换。 (或者,也许是一个分析代码中“有害”整数算术的例子的工具。)但是开发这样一个工具比在学习表达式时要小心学习要多得多。 (IMO)
答案 2 :(得分:0)
在真实的程序中,你不会有60或21个硬编码,但它们可以作为参数传入,或者是某种局部变量。
为了避免必须将.0添加到结尾,您可以将这些数字的类型声明为双精度而不是整数。这将导致除法返回双倍。
答案 3 :(得分:0)
将整数转换为double,例如:
int num1 = 60;
int num2 = 21;
double x = (double) num1 / (double) num2;