1

我必须计算播放器中正在播放的歌曲的百分比

例如,当:

    CurrentTime = 11 (Int)
    TotalTime = 222 (Int)

我需要播放的百分比,我通过以下方式做到这一点

    PlayedBufferPercent = (CurrentTime*100)/TotalTime

-> 手动计算结果为 4.95495495495,符合预期。现在我想将其四舍五入为 5 个十进制值 = 4.95496,我使用 python 尝试了以下但没有产生正确的输出。

    PlayedBufferPercent = float((CurrentTime*100)/TotalTime)
    PlayedBufferPercent1 = ("{0:.5f}" .format(PlayedBufferPercent))

结果 = 4.00000 但我想要 4.95496,请帮忙

4

2 回答 2

3

您正在使用整数运算执行算术。这个表达式:

(CurrentTime*100)/TotalTime

使用整数算术计算,因为操作数都是整数。所以它评估为4然后当你转换为浮动时

PlayedBufferPercent = float((CurrentTime*100)/TotalTime)

您只需转换44.0.

您需要使用浮点运算来执行算术运算。您可以通过使至少一个操作数为浮点数来强制执行此操作。例如:

PlayedBufferPercent = (CurrentTime*100.0)/TotalTime

或者,您可以制作CurrentTimeTotalTime成为花车。

最后,你不会4.95496介意你。相反,答案是4.95495正确的答案。

于 2013-05-22T11:57:20.737 回答
0

看起来您的PlayedBufferPercent变量仍然是一个 int - 这是预期的,因为它是 2 个整数除法的结果。

PlayedBufferPercent = (CurrentTime*100)/TotalTime
4

即使您将演员表添加到浮动,也为时已晚,并且您已经失去了精度。

解决此问题的最简单方法是通过显式或隐式(与 相同)使CurrentTimeand变为浮点数TotalTimefloat(TotalTime)TotalTime = 11.0CurrentTime

于 2013-05-22T11:57:54.760 回答