1

個人のBMIを定義するためのテーブルを作成しています。チャートは(まだ)入力を受け付けませんが(最初にスタンドアロンで機能させたいため)、メートルとフィート/インチの両方で高さを(平行軸に)表示します。

これを行うために、メートルの開始点と範囲を定義してから、定義されたメートル変数をフィート/インチに変換します

<?php
        $m; // height in m

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

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

        $hInFt = $hInImp[0];

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

xこれは for () ループ内で実行されて行数 (他の場所で定義されています) を生成するため、これを行うためのよりきれいで、より経済的で、より正確な手段を誰かが持っているかどうか疑問に思っていました。可能であれば)負荷を減らすために...

4

4 に答える 4

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を定数に引き出すこともできます...

于 2009-05-16T15:36:10.443 に答える
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 つの乗算と減算 (および round の関数呼び出し) は非常に経済的であり、コードも非常に読みやすくなっています。

于 2009-05-16T16:21:52.173 に答える
0

あなたがこれをよりきれいだと思うかどうかはわかりません。ただし、 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)
于 2009-05-16T15:20:53.677 に答える