Android/Java——用分数相乘似乎和用小数相乘不同?

Android/Java——用分数相乘似乎和用小数相乘不同?,java,android,Java,Android,我正在开发一个Android应用程序,它可以缩放用户输入,这样我就可以用一个刻度盘直观地表示输入来自某个刻度 我遇到了一些有趣的事情。我所做的是将用户输入乘以6/5,得出刻度盘需要与用户输入相对应的角度。然而,我得到的角度似乎有问题,所以我决定记录这些陈述: Log.e("", "current speed = " + currentSpeed); Log.e("", "raw results = " + ((6/5

我正在开发一个Android应用程序,它可以缩放用户输入,这样我就可以用一个刻度盘直观地表示输入来自某个刻度

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

Log.e("", "current speed = " + currentSpeed);
Log.e("", "raw results = " + ((6/5)*(currentSpeed)));
发生的事情是,电流速度似乎是乘以1。然后我尝试使用十进制形式的6/5,即1.2,然后我得到了我想要的结果

一开始,我认为Android将我的因子取整为6/5到1,因为我没有声明它是双精度的,所以我下一步尝试的是:

double factor = 6/5;
然后我把它用在我的等式中。然而,我的因子似乎仍然是1,而不是1.2

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

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

因此,java中的6/5==1

因此,将分母转换为浮点数或双精度,然后除以


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

在整数数学中,6/5=1。您需要使用小数
6.0/5.0
——这不是android处理数学的方式,而是java。@colingilespie
6.0/5.0
起作用了。这似乎有点违反直觉,但它奏效了。谢谢老实说,只需使用BigDecimal即可。
if ( is_int( numerator ) && is_int( denominator ) ) :
    d = int( numerator / denominator )
else :
    d = float( numerator / denominator )