将float转换为string时的percision损失

时间:2015-12-04 22:34:38

标签: python

让我们假设客户想知道产品的价格,因此我执行数据库查询,并获得值95(以int为单位)表示以美分为单位的值。现在我想以欧元告诉客户价格,所以我这样做:

    print("Price: " + format(price/100, ".2f") + "EUR")

我打印的是:

    Price: 0.00EUR

为什么以及如何解决此问题?

由于

3 个答案:

答案 0 :(得分:2)

您需要输出为浮点数。尝试除以100.0

答案 1 :(得分:0)

您必须在字符串格式之前执行price = float(whatever)转换为浮动。如果分子或分母是浮点数,那么结果也是。如果两者都是整数,则结果将为整数。

答案 2 :(得分:0)

这是因为bprice都是100 - 而且如果您对int执行任何操作,结果将是int 。当您执行int时,price/1000.95int0,然后format (0, ".2f")0.00。您需要做的是将price转换为float,然后再对format(float(price)/100, ".2f")进行操作,就像在100.0中一样,或者您可以将其除以浮点format(price/100.0, ".2f")。在{{1}}中解决此问题。