如何将表达式中的所有整数文字视为双精度数?

时间:2018-04-03 13:47:13

标签: java integer double expression

我刚注意到我的表达方式如

double x = 60/21

返回错误的值。

我发现这是因为60和21是整数。我应该使用

double x = 60.0/21.0

有没有办法解决为每个整数添加.0以获得准确结果的需求?

基本上我不想将小数点添加到我的代码中的每个整数。我希望double x = 60/21始终被视为double x = 60.0/21.0

有没有办法做到这一点?

更新 谢谢你的回答

4 个答案:

答案 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;