我试图找到歌曲当前位置与其总播放时间之间的比率。
long pTime = player.getCurrentBufferedTimeMcsec();
long pos = player.getCurrentPosition();
return (int)(pos/pTime * 1000000l);
返回表达式计算为零。我怎样才能解决这个问题?我猜它是我使用和连接的类型的混合物,对吧?
谢谢!
编辑我已经检查了" player.get"调用返回值,但一旦分割,在乘以之前产生一个小数(如0.06)。
答案 0 :(得分:2)
问题在于:
pos/pTime
两个操作数均为long
,因此结果为long
,这将截断任何小数部分。如果pTime
大于pos
,则除法的结果(当然也包括最终结果)将为零。
通过将其中一个操作数强制转换为浮点类型来更改代码以允许浮点结果:
return (int)((double)pos/pTime * 1000000l);
当其中一个操作数为double
时,结果为double
。
其他提示:请勿对l
常量使用小写long
- 它看起来像1
。使用大写1000000L
,或者在这种情况下完全删除L
,因为1000000
是有效的int
,它将被安全地提升为long
或者double
无论如何:
return (int)((double)pos/pTime * 1000000);
答案 1 :(得分:0)
将pos
或pTime
投射至double
。你正在对分裂进行整体截断。