【问题标题】:How to display a number with 2 decimal places [duplicate]如何显示带有2位小数的数字[重复]
【发布时间】:2017-10-13 07:11:07
【问题描述】:

无论我输入什么数字,我都需要返回一个始终有 2 位小数的数字(不是字符串!)。例如:

  • 86 返回86.00
  • 3.12345 返回3.12
  • 2.0 返回2.00

问题是,如果我使用 Python 的十进制模块,它会返回 Decimal('#'),而不仅仅是 #(我只想要数字)。如果我改为使用"%.2f" % #,它会将数字作为字符串返回,这不是我想要的,因为我无法在 Python 中对字符串进行任何数学运算。

【问题讨论】:

  • 你不能返回这样的数字。您将 representationvalue 混淆了。 86.0 是一个浮点值,它永远不会是一个小数点后有两个零的数字。
  • 相反,您可以控制数字的打印方式,因此您可以控制在需要显示它们时如何将它们转换为字符串。

标签: python-3.6


【解决方案1】:
x = 3.14159
round(x, 2)

给出 3.14

【讨论】:

  • 舍入为您提供另一个浮动对象。整数不会以 2 位小数显示,并且浮点 不是每个可能的实数的精确表示,这意味着四舍五入到两位数 仍然可以产生一个正在使用的浮点数更多位数.
  • 是的,但没有类型恰好有两位小数。准确的唯一方法是使用一个移动了两位小数的 int,但是如果没有为该类编写自定义 __mul____div__ 方法,那么没有一个数学可以工作,所以这是最简单的方法实现所要求的
  • OP 要求另一个号码。当然浮点数仍然会使用更多的数字,它是一个浮点数,它永远不会是精确的,但它会精确到 OP 使用的精度。
  • OP 要求的是不可能。他们完全无法理解数字是如何工作的,将其与字符串表示混淆。我们能做的最好的事情就是指出大量的重复数据,或许可以帮助他们更好地理解数字。
  • 感谢您的建议,但是如果已经有 2 个或更多十进制值,则 round 函数仅返回 2 个十进制值。所以换句话说,round 函数不会为2.0 返回 2 个十进制值。我也应该在我的原始帖子中提到这一点。它适用于表示货币价值的情况,通常使用 2 个十进制值。
猜你喜欢
  • 2010-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-03
  • 2016-02-09
  • 1970-01-01
相关资源
最近更新 更多