在数学运算中将结果Integer转换为Float,并带有五位小数

时间:2013-05-22 11:54:03

标签: python

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

例如:

    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,请帮忙

2 个答案:

答案 0 :(得分:3)

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

(CurrentTime*100)/TotalTime
使用整数运算来计算

,因为操作数都是整数。因此它评估为4,然后当您使用

转换为float时
PlayedBufferPercent = float((CurrentTime*100)/TotalTime)

您只需将4转换为4.0

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

PlayedBufferPercent = (CurrentTime*100.0)/TotalTime

或者,您可以将CurrentTimeTotalTime设为浮点数。

最后,你不会让4.95496提醒你。而答案是4.95495,这是正确的答案。

答案 1 :(得分:0)

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

PlayedBufferPercent = (CurrentTime*100)/TotalTime
4

即使你将演员表添加到浮动状态,也为时已晚,你已经失去了精确度。

解决此问题的最简单方法是将CurrentTimeTotalTime设置为明确float(TotalTime)或隐含TotalTime = 11.0(与CurrentTime相同)