3

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

代码: private float frequency = 1/2;

这可能与使用有关Float.toString(frequency)吗?

4

8 回答 8

11

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

private float frequency = 1.0/2.0;

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

于 2012-05-11T17:06:32.153 回答
5

1和2是java中的整数。如果您希望它们被明确解释为浮点数,您需要这样做。

private float frequency = 1f/2f;

如果您不关心数学是否实际上是先在 double 上完成的,那么这更容易阅读:

private float frequency = 1.0/2.0;
于 2012-05-11T17:07:48.287 回答
1

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

尝试:

private float frequency = 1/2.0;
于 2012-05-11T17:06:39.753 回答
1

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

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

于 2012-05-11T17:07:26.043 回答
1

你需要。这里有更多信息

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

于 2012-05-11T17:42:03.280 回答
0

当您使用整数进行算术运算时,结果会变为整数并添加 .0

所以

private float frequency = 1.0/2.0;
于 2012-05-11T17:07:56.650 回答
0

利用

    private float frequency = 1F/2F;
于 2012-05-11T17:17:39.430 回答
0

如果您要划分两个整数并且没有得到正确的输出,只需将评估int结果转换float为如下所示。

    int b = 2;
    int a = 1;

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

这将产生输出 0.5

于 2017-10-17T13:59:30.047 回答