【问题标题】:number formatting in phpphp中的数字格式
【发布时间】:2014-06-23 11:00:44
【问题描述】:

我想像下面这样格式化数字

13.20 to 13.2
13.34 to 13.34
13.00 to 13

我尝试使用 str_replace() 和 number_format() 的组合,但无法产生所需的结果。

如果有人有任何想法,请帮助我。

提前致谢

【问题讨论】:

  • 检查最后的 0 并将其删除,如果是 '.'是在最后也删除它。
  • 13.12345 会发生什么?

标签: php number-formatting


【解决方案1】:

尝试使用内置的round函数:

echo round(1.23456, 2); 

这将返回 1.23。当然,您必须决定保留小数点后多少个数字。

【讨论】:

  • 这会产生 OP 想要的结果。
【解决方案2】:

number_format 应该可以工作:

<?php
    $number = 12.345;
    echo number_format($number, 1); # Produces number with one decimal precision.
?>

编辑:

<?php
    $number = 12.30;

    #Strips ZEROs and decimal point from the end
    echo rtrim($number, '0.'); #Result: 12.3
?>

【讨论】:

  • 他只是想删除我猜结果中最后附加的'0'。因为他保持 13.34 的原样
  • 只有当小数点后的值像 .30 时,我才想要一位小数,如果值像 0.34 .55,我想要两位小数
  • 如果编号为12.34会发生什么??输出将是 12.3
  • 添加了另一个解决方案 - 它将从右侧删除 0.13.45 => 13.45, 13.40 => 13.413.00 => 13
  • @NaN 见文森特·德科的回答。
【解决方案3】:

或者简单地说,这很神奇:

$number + 0

// 12.30 + 0 = 12.3 

或者您可以将您的号码转换为浮动:

echo floatval($number);

【讨论】:

    【解决方案4】:

    这取决于您使用的变量类型。字符串13.20 将输出13.20,但float 13.20 将输出13.2

    你所要做的就是投射它:

    echo (float) '13.20'; // Will output 13.2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-29
      • 2016-01-19
      • 2011-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多