Android - 1除以2 = 0

时间:2012-05-11 17:05:29

标签: java android

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

代码:      private float frequency = 1/2;

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

8 个答案:

答案 0 :(得分:10)

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

private float frequency = 1.0/2.0;

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

答案 1 :(得分:5)

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

private float frequency = 1f/2f;

如果你不在乎数学是否实际上是双重数学,那么这更容易理解:

private float frequency = 1.0/2.0;

答案 2 :(得分:1)

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

尝试:

private float frequency = 1/2.0;

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

您需要 施放 。这是 more information

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

答案 5 :(得分:0)

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

所以

private float frequency = 1.0/2.0;

答案 6 :(得分:0)

使用

    private float frequency = 1F/2F;

答案 7 :(得分:0)

如果您要分割两个整数并且没有得到正确的输出,请将已评估的int结果关联到float,如下所示。

    int b = 2;
    int a = 1;

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

这将产生输出0.5

相关问题