在PHP中将fraction转换为float

时间:2014-11-24 12:55:54

标签: php integer

如何在 PHP convert 1/4 to 0.25

在表格中,我将号码插入1/4。在action page中,我将post变量设为1/4。 如何将其转换为0.25。我认为在行动页面中,这是以字符串形式获得的。这就是为什么它显示为1/4。但我需要0.25.我该怎么做?

主页

<input type="text" name="a" id="a">

行动页

$a = $_POST['a'];
echo $a;  //gives 1/4 but need 0.25

请帮助..

3 个答案:

答案 0 :(得分:1)

一种可能的方式是:

在操作页面中,首先展开输入的值,如:

$explode = explode('/', $_POST['a']);

然后你只需要分开它们:D

$result = $explode[0] / $explode[1];
echo $result; //echoes 0.25

L.E:在我看来,这样做的最佳方法是使用3个输入。一个带有第一个数字,一个带有操作,一个带有第二个数字。在这种情况下,您可以制作一个真实的计算器并在操作页面中执行正常操作,如下所示:

显示页面中的

<input type="text" name="first_no" id="first_no">
<input type="text" name="operation" id="operation">
<input type="text" name="second_no" id="second_no">

在行动页面中:

switch($_POST['operation']) {
   case '+';
     $result = $_POST['first_no'] + $_POST['second_no'];
     break;
   case '-';
     $result = $_POST['first_no'] - $_POST['second_no'];
     break;
   case '*';
     $result = $_POST['first_no'] * $_POST['second_no'];
     break;
   case '/';
     $result = $_POST['first_no'] / $_POST['second_no'];
     break;
  //and so on... if you need more
}

echo $result;

L.E2:为了好玩,我只用了一个输入为你的代码制作了一个版本

//get index
preg_match("/\D/is", $_POST['a'], $mList, PREG_OFFSET_CAPTURE);
$index = $mList[0][1];

//get operation
$operation = substr($string, $index, 1);

//get numbers
$explode = explode($operation, $string);

//produce result
switch($operation) {
   case '+';
     $result = $explode[0] + $explode[1];
     break;
   case '-';
     $result = $explode[0] - $explode[1];
     break;
   case '*';
     $result = $explode[0] * $explode[1];
     break;
   case '/';
     $result = $explode[0] / $explode[1];
     break;
  //and so on... if you need more
}

echo $result;

希望这会有所帮助:D

答案 1 :(得分:0)

您可以使用以下功能:

<?php

    function calculate_string( $mathString )    {
        $mathString = trim($mathString);
        $mathString = str_replace ('[^0-9\+-\*\/\(\) ]', '', $mathString); 

        $compute = create_function("", "return (" . $mathString . ");" );
        return 0 + $compute();
    }

    echo calculate_string("1/4");


?>

输出:

0.25

答案 2 :(得分:-1)

你可以在这里使用eval但要小心!如果你没有正确地转义输入,直接将$ _POST东西解析为eval会使你的脚本对你的web服务器非常危险!

如果你确定你会得到1/4或1/2这样的东西,那就可以了:

echo eval("return ".$_POST['a'].";");

但正如我所说。小心这一点 如果有人想要一些不好的东西,他可以在您的输入中输入exec('init 0'),如果您的网络服务器获得了执行此操作的许可,您的服务器将会关闭(这只是对无担保评估的无数漏洞之一)所以我请你成为耐心的。

第二种方法是分割你的数字并将它们分开。但这肯定会有很多格式问题。

问候