6

PHP は、値を正しく計算するスクリプトを実行します。その値をエコーすると、4.865472349 になります。

次に、単純な更新スクリプトを使用して値をデータベースに入力します。

$query = "UPDATE members
     SET rating = $r 
     WHERE username = '$username'";
mysql_query($query);

これを行うと、データベースに入力される値は 5 です。

前の式の $r を直接 4.865472349 に置き換えると、同じ結果が得られます。

明らかにこれは、SQL タイプが「整数」に設定されているためです。

しかし、この問題を修正するために何を変更すればよいかわかりません。何か助けはありますか?

4

4 に答える 4

3

おそらくDOUBLEを使用する必要があります。これは、PHP の浮動小数点数と同じ精度と範囲を持ちます (ほとんどの構成で)。

PHPMyAdmin を使用してタイプを切り替えるには:

  1. テーブルをクリック
  2. 構造をクリック
  3. 評価の横にある [変更] (鉛筆アイコン) をクリックします。
  4. 「タイプ」の下で、オプション「DOUBLE」を選択します
  5. 保存を押す
于 2012-08-29T16:43:08.490 に答える
3

4.865472349 と同じ精度が必要な場合は、DECIMAL(10,9) を使用できます。

参照

たとえば、DECIMAL(18,9) 列は小数点の両側に 9 桁あるため、整数部分と小数部分にそれぞれ 4 バイトが必要です。DECIMAL(20,6) 列には、14 桁の整数と 6 桁の小数があります。整数桁は、9 桁に 4 バイト、残りの 5 桁に 3 バイトを必要とします。小数部の 6 桁には 3 バイトが必要です。

MySqlを使用していると仮定します

于 2012-08-29T16:44:46.640 に答える
0

データベースの列タイプを編集して、整数以上のものを保持できるようにします。

ALTER TABLE members
CHANGE rating rating float(10,9); 
于 2012-08-29T16:44:16.500 に答える
0

格納する数値に応じて、float、double、または decimal を使用できます。フロートで十分だと思います。

于 2012-08-29T16:44:41.883 に答える