【发布时间】:2014-05-26 18:18:49
【问题描述】:
我无法在网站上找到这些规则,(肯定是因为我在谷歌上搜索错误)所以我在这里问。
将 int 除以 int 并存储在 double 中始终首先存储舍入整数。我能够找到使其工作的唯一方法是在进行除法之前将两个值都转换为双精度值。一定有更好的方法。
另外,返回类型的规则在哪里?
【问题讨论】:
标签: java
我无法在网站上找到这些规则,(肯定是因为我在谷歌上搜索错误)所以我在这里问。
将 int 除以 int 并存储在 double 中始终首先存储舍入整数。我能够找到使其工作的唯一方法是在进行除法之前将两个值都转换为双精度值。一定有更好的方法。
另外,返回类型的规则在哪里?
【问题讨论】:
标签: java
实际上,没有更好的方法。一个 int 除以一个 int 得到一个 int。所以,假设你除以 5/2——因为 2 和 3 之间没有整数,所以你得到 2。如果你想要一个浮点结果,你需要将其中一个设为浮点类型;而不是
int f=5, t=2;
double result;
result = f/t;
做起来
result = f / (double) t ;
使用类型转换告诉它“我想要浮点除法!”。
【讨论】:
在编程语言中,有两种类型的操作:
如果2个操作数都是Integer类型,则执行Integer运算。
如果 2 个操作数中的 ANYONE 是浮点数,则执行浮点运算。
周四:
Int / Int --------> int
Double / Int -----> Double
Double / Double --> Double
【讨论】:
您只需要转换一个参数即可使结果为双精度
int a,b;
double d = (double) a / b;
一个更简单的方法是从一开始就使用双打。
double a, b;
double d = a / b;
double 可以表示所有可能的int 值而不会出现舍入误差。
【讨论】:
当然有更好的方法。只需将其中一个转换为double,另一个将自动转换。
表达式的类型由存储之前的参数确定,因此正如其他答案所述,int 除以 int 得到 int,然后才会存储为 @987654325 @。请注意,这不是 Java 特有的,它发生在我所知道的所有进行整数除法的语言中。
【讨论】: