我一直在尝试将我的新 IOIO 用于 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;
如果您不关心数学是否实际上是先在 double 上完成的,那么这更容易阅读:
private float frequency = 1.0/2.0;
这是整数除法(仅整数)。
尝试:
private float frequency = 1/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
当您使用整数进行算术运算时,结果会变为整数并添加 .0
所以
private float frequency = 1.0/2.0;
利用
private float frequency = 1F/2F;
如果您要划分两个整数并且没有得到正确的输出,只需将评估int
结果转换float
为如下所示。
int b = 2;
int a = 1;
float out = (float) a / b;
System.out.println(out);
这将产生输出 0.5