Android / Java - 乘以一小部分似乎是不同的乘以其十进制等值?

时间:2015-09-08 00:59:49

标签: java android

美好的一天,我正在开发一个扩展用户输入的Android应用程序,因此我可以使用拨号直观地表示输入来自特定比例的位置。

我遇到了一些有趣的事情。我正在做的是我将用户输入乘以6/5以得出拨号需要与用户输入相对应的角度。然而,似乎我得到的角度有问题所以我决定记录这些陈述:

Log.e("", "current speed = " + currentSpeed);
Log.e("", "raw results = " + ((6/5)*(currentSpeed)));

发生的事情是currentSpeed似乎乘以1.然后我尝试使用6/5的十进制形式1.2,然后我得到了我想要的结果。

起初,我认为Android将我的因子6/5舍入为1,因为我没有将其声明为双倍,所以我接下来尝试的是:

double factor = 6/5;

然后我在我的等式中使用了它。然而,似乎我仍然得到1而不是1.2作为我的因素。

我的问题是:为什么Android似乎不能很好地处理分数操作?通常我不会有问题,因为6/5方便地转换为1.2。但是,在分数不能很好地转换为小数的情况下,我们在准确性方面存在问题。在Android中进行数学运算时,有没有办法可靠地使用分数?

1 个答案:

答案 0 :(得分:1)

java如何管理除法(伪代码):

if ( is_int( numerator ) && is_int( denominator ) ) :
    d = int( numerator / denominator )
else :
    d = float( numerator / denominator )

因此在java中6/5 == 1。

所以将你的分母投射到浮点数或双数,然后除以。

另外,请记住检查分母是否为0(以防万一)。