Android/Java——用分数相乘和用十进制相乘似乎是不同的

  • 本文关键字:是不同 十进制 Android Java 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中进行数学运算时,是否有方法可靠地使用分数?

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

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

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

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

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

最新更新