【问题标题】:Turn non decimal number into decimal number将非十进制数转换为十进制数
【发布时间】:2013-01-22 16:35:07
【问题描述】:

我想知道(因为我目前不知道也找不到答案)如何将不带小数点的数字变成带小数点的数字。

这就是我想要发生的事情。

Input         Output
1.20          1.20
1234          0.1234
0.23456       0.23456
4321          0.4321

所以基本上我需要一个接受输入数字(来自表单字段、变量或其他)的 PHP 函数,如果一个整数在开头添加 0.(零点)。如果输入的数字已经有小数点了(我会在后面加上 number_format)。

【问题讨论】:

    标签: php


    【解决方案1】:

    这个简单的解决方案应该可以做到。

    function to_decimal($in){
        return (stripos($in, ".")!==false)? $in: "0.".$in;
    }
    

    【讨论】:

      【解决方案2】:

      你可以用is_float做这样的事情

      if (!is_float($input))
      {
        $result = "0." . $input
      }
      

      【讨论】:

      • 表单字段几乎不传递键入的值。它们通常是字符串。 is_float("12.4") 是 false。
      【解决方案3】:

      试试这个

      function dPoint($number)
      {
          if(is_float($number))
          {
          return $number;
          }
          else
          {
          return "0.".$number;
          }
      }
      

      【讨论】:

      • 表单字段几乎不传递键入的值。它们通常是字符串。而is_float("12.4") 是false。
      【解决方案4】:

      这是我没有蹩脚字符串连接的解决方案

      function leadingZero($num) {
        if (!ctype_digit($num)) {
           return $num/pow(10, strlen($num));
        }
        return $num;
      }
      // php> =leadingZero(4652)
      // 0.4652
      // php> =leadingZero(0.2)
      // 0.2
      

      【讨论】:

      • 表单字段几乎不传递键入的值。它们通常是字符串。而is_float("12.4") 是false。
      • $num/pow(10, strlen($num)) 是一项昂贵的操作。
      猜你喜欢
      • 1970-01-01
      • 2013-05-31
      • 2018-07-04
      • 2015-01-26
      • 1970-01-01
      • 2014-04-16
      • 1970-01-01
      • 2012-03-04
      相关资源
      最近更新 更多