【问题标题】:PHP remove decimal from number stringPHP从数字字符串中删除小数
【发布时间】:2011-06-11 23:14:23
【问题描述】:

我有一个算法可以返回一个带小数点的数字(即“.57”)。我想做的只是得到没有小数的“57”。

我用过 eregi_replace 和 str_replace 都没有用过!

$one = ".57";
$two = eregi_replace(".", "", $one);
print $two;

【问题讨论】:

标签: php decimal eregi


【解决方案1】:
Method       Result   Command
x100         57       ((float)$one * 100))
pow/strlen   57       ((float)$one * pow(10,(strlen($one)-1))))
substr       57       substr($one,1))
trim         57       ltrim($one,'.'))
str_replace  57       str_replace('.','',$one))

只是展示一些其他获得相同结果的方法

【讨论】:

  • 聪明,但如果他得到.572,那就不行了。结果将是 57。
  • @Jonah:已修复。还展示了其他一些替代方案。
【解决方案2】:

这将作为一个整数返回。

$two = (integer) trim('.', $one);

【讨论】:

    【解决方案3】:
    $one = '.57';
    $two = str_replace('.', '', $one);
    echo $two;
    

    这行得通。 100% 测试。顺便说一句,所有 ereg(i)_* 函数都已折旧。如果需要正则表达式,请改用 preg_*。

    【讨论】:

      【解决方案4】:

      我用过 eregi_replace 和 str_replace 都没有用过!

      嗯...ereg_replace() 不起作用,因为它使用的是正则表达式,并且.(点)字符具有特殊含义:everything(因此您已将每个字符替换为""(空字符串))。

      str_replace() 在这种情况下工作得非常好。

      这是一个现场测试:http://ideone.com/xKG7s

      【讨论】:

        【解决方案5】:

        您说您尝试使用 str_replace 没有任何运气,但以下代码完美运行:

        <?php
            $one = '.57';
            $two = str_replace('.', '', $one);
            echo $two;
        ?>
        

        【讨论】:

          【解决方案6】:
          $number = ltrim($number, '.');
          

          这会删除所有尾随点。

          【讨论】:

          • 很好,但我们不知道它是否总是在(左)边缘。 @Matthew 是吗?
          猜你喜欢
          • 2022-11-16
          • 1970-01-01
          • 1970-01-01
          • 2011-05-06
          • 2012-03-09
          • 1970-01-01
          • 1970-01-01
          • 2012-06-05
          • 1970-01-01
          相关资源
          最近更新 更多