0

これらの配列が異なる出力を与える理由がわかりません:

• この値の 1/4 はテーブル (db) からのものです。

id | value
...
2  | 1/4
3  | 1/7

echo $matrix[0][2]; //show 1/4

•しかしもしそうなら= 1/4

echo $matrix[0][2] = 1/4 // show 0.25

これは、すべての分数の値で発生します。たとえば、最初の例の 1/7 は 1/7 を表示しますが、2 番目の例では 0.142857142 を表示します

それで、私の質問はなぜですか?私は常に小数値が欲しいのですが、私が言ったように最初のコードは小数で動作していません。

ありがとう

4

3 に答える 3

2

最初の例では、データベースから文字列値を取得しています。2 番目の例では、数式を評価しています。

あなたの最善の策は、次のようなことをすることです:

$t = explode("/", $matrix[0][2]);
echo ($t[0] / $t[1]);
于 2011-10-28T16:47:13.440 に答える
1

データベースからの値は文字列で、自分で設定した値はfloatです。

MySQL を使用している場合は、mysql_fetch_fieldを使用してフィールド タイプを知ることができます。これは、MyISAMを使用している場合に役立ちます(MySQL は常に文字列を返します)。

簡単で醜い解決策があります:

$var = '1/4';
echo (float)eval('return '.$var.';');

別の解決策:

$var = '1/4';
$tmp = explode('/', $var, 2);
$tmp = $tmp[0]/$tmp[1];
echo $tmp;

しかし、最良の解決策は、結果をデータベースに保存し (たとえば 0.25)、取得時に結果を float にキャストすることだと思います。

于 2011-10-28T16:48:45.487 に答える
1

最初の例の値の Cos には文字列型があり、2 番目の例では数学関数を計算していて、答えには浮動小数点型があります。

この構文を使用する場合は、「echo $a = '1/4';」とします。出力は同じになります。

于 2011-10-28T16:43:08.750 に答える