Java Android-1除以2=0

Java Android-1除以2=0,java,android,Java,Android,我一直在尝试使用android的新IOIO,需要找到信号的频率。 所以我把信号转换成二进制,然后用1除以1之间的时间。虽然当我这样做时,我发现我得到了0作为我的输出。然后我决定看看1/2给了我什么,令我惊讶的是,它也给了0!有人知道为什么会这样吗 代码: 专用浮点数频率=1/2 使用Float.toString(frequency)?这是整数除法的一个例子。尝试: private float frequency = 1.0/2.0; Java将执行1/2,这将产生0.5。但是,由于Java将其

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

代码:
专用浮点数频率=1/2


使用
Float.toString(frequency)
?这是整数除法的一个例子。尝试:

private float frequency = 1.0/2.0;
Java将执行1/2,这将产生0.5。但是,由于Java将其视为对整数的操作(0.5不是整数),因此它将截断小数,只保留整数部分0。通过告诉Java使用浮点(1.0 vs.1),您告诉它保留中间计算的小数部分。

这是整数除法(仅整数)

尝试:


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


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

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

private float frequency = 1f/2f;
如果你不在乎数学是不是先在双精度上完成的,那么这更容易理解:

private float frequency = 1.0/2.0;

当您对整数进行算术运算时,结果会变成一个整数,也会加上。0

所以

使用

你需要施放。这里是

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

,只需将计算的
int
结果强制转换为
float
,如下所示

    int b = 2;
    int a = 1;

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

这将产生0.5的输出

重要的是要认识到,赋值右边的表达式是以书面形式计算的,而不管结果被赋值到的变量的类型如何。在本例中,使用了整数文本,因此表达式的结果是整数,然后将其强制转换为浮点;这种行为在“普通”Java程序中是相同的。
    private float frequency = 1F/2F;
class Main {
    public static void main(String[] args) {
        float myValue = (float) 1/2;
        System.out.println("1/2 = " + myValue);
    }
}
    int b = 2;
    int a = 1;

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