作者batista5566 (炸弹摔5566)
看板AndroidDev
标题[问题] 计算值为零
时间Mon May 20 19:56:44 2013
各位好,我在网路上看到下面一段程式,
我要取值在MainActivity中显示f2跟f4的数值,
可是我能在MainActivity中显示出f2的值,
却显示不出f4的值,
我用debugger看,f2有值,f3是f2的值(这f3是我用来观看 ),
但f4的值总是为0,
(1)照理来讲,应该是将f2做运算而已,怎麽会是0而已?
请各位大大解说一下。
另外,我想请教,这应该跟Java有关,但我没学过Java,
(2)就前面f2已设为int,为什麽还要设f2=(int)并用()号包住里面的计算式?
因为我移除等号後面的()号会出现错误,把(int)单独移掉也是错,这是甚麽性质?
(3)另外,我如果for(i=0;i<30;i++);
其中的i算int还是哪种类型?
谢谢!
public void Test()
{
float frequency=0;
int f1=0,f2=0,i=0;
int f4=0;
int f3=0;
AAA_time = System.currentTimeMillis();
frequency = AAA_time - LAST_AAA_time;
frequency = 1000/frequency*60;
f1=(int)frequency;
f[29]=(int)frequency;
if(f[0]>0)
{
for(i=0;i<30;i++)
f2=f2+f[i];
f2=(int) ((f2/30) + 0.5);
f3=f2;
f4= (60/f3)*1000;
Message msg =
mHandler.obtainMessage(MainActivity.MESSAGE_READ_AAAT);
Bundle b = new Bundle();
b.putInt("f2",f2);
b.putInt("f3",f4);
msg.setData(b);
msg.sendToTarget();
}
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.124.43.36
※ batista5566:转录至看板 java 05/20 19:56
1F:→ qweqweqweqwe:可以说一下 f3 可能是多少吗? 问题应该就出在 60/f3? 05/20 20:20
2F:→ batista5566:大概是1~0.04间 05/20 20:22
3F:→ asilzheng:f3 是多少?大於60的话 (60/f3) = 0 再乘 1000也是0 05/20 21:02
4F:→ asilzheng:我猜你应该是要 f4=(int) ((60.0/f3)*1000); 05/20 21:04
真奇妙,为什麽60改为60.0即可?
我前面有测试过,
一开始 int f4=0; 改为 float f4=0;
接着 f4= (60/f3)*1000; 改为 f4=(float) (60/f3)*1000;
b.putInt("f3",f4); 改为 b.putFloat("f3",f4);
接收端的地方也将int/Int改为float/Float等,
也是0,
但是加".0"就可以了,
可否说一下这加".0"的意思在哪吗? 感谢><"
※ 编辑: batista5566 来自: 140.124.43.36 (05/20 21:13)
※ 编辑: batista5566 来自: 140.124.43.36 (05/20 21:19)
5F:→ asilzheng:60(int) 60.0(double)(此时会自动将 f3 转型为 double) 05/20 21:42
6F:→ asilzheng:上面那行少说 60.0/f3 会自动将 f3 也转为 double 计算 05/20 21:44
7F:→ gpc:这是考试吗@@ 看不懂第一题 05/21 00:03
8F:→ gpc:没学过java也无妨 所有的程式概念都是一样的 05/21 00:03
9F:→ gpc:.0在java中会当成floating,你也可以写 60F 05/21 00:05