【问题标题】:Format a float to two decimal places将浮点数格式化为两位小数
【发布时间】:2012-09-15 07:44:20
【问题描述】:

我想格式化一个浮点值,我必须保留两位小数。

例如,如果我有一个价格为5.2 的浮点数,我希望它被格式化为5.20

【问题讨论】:

标签: php string


【解决方案1】:

试试number_format:

echo number_format("5.2",2)

【讨论】:

  • 请记住 number_format 返回一个字符串,因此您的浮点数将不再是浮点数。如果您尝试在计算中使用结果数字,您可能会得到不希望的结果。您可以通过将其包装在 floatval() 中将其转换回浮点数
  • 注意:+number_format("5.2",2); 会给你一个数字,而number_format("5.2",2) 会给出一个字符串。无论如何,sprintf('%0.2f', $num) 在一般情况下一直是我的首选。从来没有正当的理由进行基准测试,如果您有正当理由使用其他方式(个人偏好(或上下文)除外),请告诉我。干杯!
  • 注意:number_format 会将您的数字四舍五入...例如 number_format('21.188624', 2, ',', ' ') 是 21,19。 stackoverflow.com/questions/3833137/…
  • 重要提示:如果您想对结果进行计算,正如 Baxny 所提到的,转换 number_format(n > 999, 2) 将导致 1。您不能转换或计算带有逗号的数字字符串,因此请务必将其删除:number_format('5.2', 2, '.', '');
【解决方案2】:

您需要使用printfsprintf。您可以在php docs 中了解更多信息。

【讨论】:

    【解决方案3】:

    如果您只是想确保以两位小数显示数字,您还可以使用number_format,或(如果这是货币值)money_format

    例如:echo number_format('5.2', 2);

    【讨论】:

      【解决方案4】:

      试试这个:

      number_format((float)$foo, 2, '.', '');
      

      【讨论】:

      • 请考虑编辑您的答案,以说明您的代码如何解决手头的问题。
      • @Matt 这个答案已经足够好了.. 看看上面的答案,它完全一样...
      猜你喜欢
      • 2011-07-08
      • 2011-09-15
      • 2016-09-09
      • 2011-06-04
      • 1970-01-01
      • 2023-01-08
      • 2020-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多