Android – 1除以2 = 0

我一直在尝试使用我的新IOIO for android,并且需要找到信号的频率。
所以我将信号转换为二进制,然后将1除以1之间的时间。 虽然当我这样做时,我发现我的输出为0。 然后我决定看看1/2给了我什么,令我惊讶的是它也给了0! 任何人都知道为什么会这样吗?

代码: private float frequency = 1/2;

这可能是使用Float.toString(frequency)吗?

这是整数除法的一个例子。 尝试:

 private float frequency = 1.0/2.0; 

Java将执行1/2,产生0.5。 但是,由于Java认为这是对整数的操作(并且0.5不是整数),它会截断小数并只留下整数部分0。通过告诉Java使用浮点数(1.0对1),你告诉它保留中间计算的小数部分。

1和2是java中的整数。 如果您希望将它们显式解释为浮点数,则需要执行此操作。

 private float frequency = 1f/2f; 

如果你不在乎数学实际上是先双重完成,那么这个更容易阅读:

 private float frequency = 1.0/2.0; 

1和2是整数,它们返回一个整数。

在进行除法之前,尝试使用这些值创建两个浮点数。

你需要施展 。 这是更多信息

float myValue = (float) 1/2;

 class Main { public static void main(String[] args) { float myValue = (float) 1/2; System.out.println("1/2 = " + myValue); } } 

输出为1/2 = 0.5

这是整数除法(仅整数)。

尝试:

 private float frequency = 1/2.0; 

当你用整数做aritmetic时,结果变成一个整数也加上.0

所以

 private float frequency = 1.0/2.0; 

使用

  private float frequency = 1F/2F; 

如果要分割两个整数并且没有得到正确的输出,只需将计算的int结果caste为float ,如下所示。

  int b = 2; int a = 1; float out = (float) a / b; System.out.println(out); 

这将产生0.5的输出