【问题标题】:php numbers formatting [closed]php数字格式[关闭]
【发布时间】:2013-04-09 21:12:23
【问题描述】:

我有这个变量 $mynumber 回显一个介于 1 和 100 之间的数字,在输出中,我需要将此数字除以 2,将其四舍五入,并在数字之间放置一个点,如下所示:

<?php echo $mynumber ?>

//output e.g. 55

我需要输出 2.7 (55/2 -> 27.5 -> 27 -> 2.7)

我无法正确格式化它,你能帮帮我吗? 谢谢

【问题讨论】:

  • 向我们展示您的尝试
  • number_format($your_final_number, 1);
  • 如果数字是1或100呢?
  • 查看 printf / sprintf。它们可能看起来令人困惑,但您应该能够找到您所追求的示例。
  • 100 会变成 5.0 但 1000 呢?

标签: php rounding number-formatting


【解决方案1】:

如果$mynumber 介于 1-100 之间,这应该可以:

<?php echo floor($mynumber/2)/10; ?>

【讨论】:

    【解决方案2】:

    我想这就是你要找的东西? 这会将所有值向下舍入。

    $mynumber = (floor($mynumber/2) /10);

    如果您想根据值本身向上或向下舍入值,请使用以下命令:

    $mynumber = (round($mynumber/2) /10);

    【讨论】:

    • 这将输出 2.8 for 55
    • 使用floor() 而不是round()
    • 我读了他的问题,因为他想要四舍五入,而不是向下四舍五入,但我在他的例子中看到,他想在 0.5 上向下!
    【解决方案3】:
    <?php
    $mynumber = 55;
    echo (intval($mynumber/2))/10 . "\n";
    ?>
    

    我假设您并不是真的想要舍入而是截断,因为您写道 27.5 变为 27,而不是 28。

    【讨论】:

    • 是的,如果存在则截断第三个数字,抱歉。我正在做一些测试,但您的解决方案似乎有效。谢谢大家
    • 如果你有负数,你必须决定是要 intval() 还是 floor() 的行为。
    【解决方案4】:
    <?php
        $number = 55;
    
        $mynumber = floor($number/2);
        $chars = strlen($mynumber);
        $pos = substr($mynumber, $chars-1);
        $pos2 = substr($mynumber, $pos)+1;  
        $newNumber = (float)(str_replace($pos, '.', $mynumber).substr($mynumber, $pos2));
        echo $newNumber;
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多