【问题标题】:Convert fraction to decimal in Php在 PHP 中将分数转换为小数
【发布时间】:2015-08-13 22:24:50
【问题描述】:

这是我的代码

<?php
Id  =$_GET['ID'];
error_reporting(0);
$con = mysql_connect("localhost","root","");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("ehealth monitoring", $con); 
$sth = mysql_query("SELECT DateandTime,BP FROM table  WHERE ID='".$Id."'");
$rows = array();
$rows['name'] = 'BP';
while($r = mysql_fetch_array($sth)) {
$rows['data'][] = [$r['DateandTime'],$r[eval('BP')]];
}
echo json_encode($rows, JSON_NUMERIC_CHECK);
mysql_close($con);
?>

在此代码中,BP 包含 100/77、100/50、99/45 种值。 我想将此值转换为十进制。我找不到我的错误。请帮我转换值并将值传递给 json。

【问题讨论】:

  • 您正在将字符串 BP 评估为 PHP 代码。不是值,而是字符串。您的意思是使用eval($r['BP']) 吗?同样,简单地将字符串拆分为斜线并进行常规除法,而不是依赖 EVAL。当恶意数据在您的数据库中并在您的源代码中被评估时会发生什么?
  • 感谢您的回复。我不知道 eval.. 只是我试过了。如果您有任何代码,我该如何转换值??@h2ooooooo
  • 您知道该值将是number/number。用$fractions = explode('/', $r['BP']) 拆分并像$fractions[0] / $fractions[1] 一样计算它。另请注意,您的代码使用的是过时的 mysql 库(使用 mysqli_PDO),并且您的代码对 SQL 注入开放(您需要转义或绑定变量)。
  • 谢谢先生您的想法@h2ooooooo
  • @h2ooooooo 感谢先生其作品

标签: php sql json


【解决方案1】:

此功能将为您提供帮助,您可以根据需要随意修改功能。

   <?php
    echo convertToDecimal ("100/77");

    function convertToDecimal ($fraction)
    {
        $numbers=explode("/",$fraction);
        return round($numbers[0]/$numbers[1],6);
    }
    ?>

这个函数将分数转换为小数。

【讨论】:

  • 不能正常工作,即“1 3/32”。结果应该是 1.09375 而不是 0.03125
【解决方案2】:

对上述函数的一个小扩展:

<?php
echo convertToDecimal ("100/77/22");
function convertToDecimal ($sFraction, $iPrecision = 6, $sFractionSign = '/')
{
    $fResult = 0;
    $aNumbers=explode($sFractionSign,$sFraction);
    if(count($aNumbers) == 1){
        //user wrote a normal number with no fraction sign
        $fResult = $aNumbers[0];
    } else {
        //user wrote a fraction with at least one $sFractionSign
        $fResult = $aNumbers[0];
        foreach($aNumbers as $iNumber){
            $fResult /= $iNumber;
        }
    }
    return round($fResult, $iPrecision);
}
?>

【讨论】:

  • 仅供参考,这不能按预期工作。例如对于“5/10”,它给出 0.1 而不是 0.5
猜你喜欢
  • 2010-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-14
  • 2011-07-29
  • 1970-01-01
  • 2015-10-13
相关资源
最近更新 更多