美好的一天,我正在开发一个扩展用户输入的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中进行数学运算时,有没有办法可靠地使用分数?
答案 0 :(得分:1)
java如何管理除法(伪代码):
if ( is_int( numerator ) && is_int( denominator ) ) :
d = int( numerator / denominator )
else :
d = float( numerator / denominator )
因此在java中6/5 == 1。
所以将你的分母投射到浮点数或双数,然后除以。
另外,请记住检查分母是否为0(以防万一)。