Android数学计算未达到预期价值

时间:2016-10-18 20:44:30

标签: java android

我试图进行计算,但我没有得到正确的结果并且难以理解原因。

计算

float Signal = ((20 - 0) / (20 - 4)) * (F5 - 4) + 0;

F5 = 12并被声明为" Float"型

通过计算器运行时,您最终会得到以下结果:

  1. ((20-0)/(20-4))*(12-4)+ 0
  2. ((20)/(16))*(12 - 4)+ 0
  3. (1.25)*(8)+ 0
  4. 结果= 10
  5. 然而,当通过Android代码运行时,我得到8的结果。

    为什么这样,我想了解发生了什么

1 个答案:

答案 0 :(得分:2)

使用整数运算计算第一项((20 - 0) / (20 - 4)),给出值1。无论8的类型如何,这都会产生最终结果F5。如果希望它以浮点形式发生,请使用浮点常量

float Signal = ((20f - 0f) / (20f - 4f)) * (F5 - 4f) + 0f;

从技术上讲,由于数字提升,你​​不需要所有的常量都是浮点数,但是那些读取你想要的代码的人会更加清楚。