我一直在尝试使用我的新IOIO for android,并且需要找到信号的频率 所以我将信号转换为二进制,然后将1除以1之间的时间。虽然当我这样做时,我发现我的输出为0。然后我决定看看1/2给了我什么,令我惊讶的是它也给了0!任何人都知道为什么会这样吗?
代码:
private float frequency = 1/2;
这可能是使用Float.toString(frequency)
吗?
答案 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