预测从m(米)到英尺(')和英寸('')的转换

时间:2009-05-16 14:56:45

标签: php unit-conversion

我正在创建用于定义个人BMI的表格。图表(现在)没有输入(因为我想让这个东西独立工作,首先),但它确实显示(在平行轴上)米和英尺/英寸的高度。

为了做到这一点,我正在定义仪表的起点和范围,然后将定义的仪表变量转换为英尺/英寸,这是我想出的(请不要笑< / em> ...)以下内容:

<?php
        $m; // height in m

        $hInInches = ($m*3.2808399)*12;

        $hInImp = explode(".",$hInInches);

        $hInFt = $hInImp[0];

        $hInInches = substr(12*$hInImp[1],0,2);
?>

我想知道是否有人有任何更漂亮,更经济,更准确的方法可以做到这一点,因为这是在for()循环内运行以生成x行数(定义elswhere ),我希望(如果可能的话)减少负荷...

4 个答案:

答案 0 :(得分:2)

这是一种方法,在伪代码中:

inches_per_meter = 39.3700787
inches_total = round(meters * inches_per_meter)  /* round to integer */
feet = inches_total / 12  /* assumes division truncates result; if not use floor() */
inches = inches_total % 12 /* modulus */

您也可以将12拉出为常量......

答案 1 :(得分:1)

对我来说,你应该避免使用derobert已经说过的字符串操作函数。 在php中,代码应类似于以下代码:

<?php
   $m=2; // height in m
    $hInFeet= $m*3.2808399;
$hFeet=(int)$hInFeet; // truncate the float to an integer
    $hInches=round(($hInFeet-$hFeet)*12); 
?>

只需要两次乘法和一次减法(加上一个圆形函数调用)非常经济,代码也很可读。

答案 2 :(得分:0)

我不确定你是否认为this更漂亮;但是,我认为ajax/javascript解决方案可能是个主意。当用户输入值时,结果会更新。

with regards to your code
* define M_TO_FEET, FEET_TO_INCH constants.
* define 2 equations feet_to_metres(value_to_convert) and metres_to_feet(value_to_convert)
* write the conversion code in each and let it return the result

and then you can create a simple if statement:
* If user inputs metres, then metres_to_feet(value_entered_by_user)

答案 3 :(得分:0)

     <?php echo metersToFeetInches(3); //call function    ?>

     <?php
        function metersToFeetInches($meters, $echo = true)
        {
            $m = $meters;
            $valInFeet = $m*3.2808399;
            $valFeet = (int)$valInFeet;
            $valInches = round(($valInFeet-$valFeet)*12);
            $data = $valFeet."&prime;".$valInches."&Prime;";
            if($echo == true)
            {
                return $data;
            } else {
                return $data;
            }
        }
        ?>

输出:9'10“