7

処理時間を MySQL データベースに float(4,4) として保存しています。

$start_time = microtime( TRUE );

// things happen in my script

$end_time = microtime( TRUE );
$process_time = $end_time - $start_time;

// insert $process time into mysql table

$process_time は、コマンド ラインに出力されると常に正しく表示されますが、その値が 1 より大きい場合、.9999 として mysql に格納されます。

何を与える?

4

4 に答える 4

17

float(4,4) は合計 4 桁を意味し、そのうちの 4 桁は小数点以下です。したがって、たとえば 10,4 に変更する必要があります

MySQL では、非標準の構文である FLOAT(M,D) または REAL(M,D) または DOUBLE PRECISION(M,D) を使用できます。ここで、「(M,D)」は合計で最大 M 桁の値を格納できることを意味し、そのうち D 桁は小数点以下が可能です。

于 2011-11-11T09:32:37.463 に答える
7

MySQL 数値型ページから:

MySQL では、非標準の構文である FLOAT(M,D) または REAL(M,D) または DOUBLE PRECISION(M,D) を使用できます。ここで、「(M,D)」は合計で最大 M 桁の値を格納できることを意味し、そのうち D 桁は小数点以下が可能です。たとえば、FLOAT(7,4) として定義された列は、表示されると -999.9999 のように見えます。MySQL は値を格納するときに丸めを実行するため、999.00009 を FLOAT(7,4) カラムに挿入すると、おおよその結果は 999.0001 になります。

float(4,4) は 4 桁の数字を意味し、4 桁すべてが小数点の右側にあります。保持できる最大数は 0.9999 です。

于 2011-11-11T09:33:43.130 に答える
2

これはあなたの質問に対する直接の回答ではありませんが、フロートを使用しないでください。float では、丸めの問題がよく知られています。decimal精度が必要な場合はa を使用します。

于 2011-11-11T09:34:19.833 に答える
2

これは、渡す値が原因です。小数点以下 4 桁を許可していますが、合計で 4 桁しかないため、格納できる最大値は .9999 です。に変更しfloat(5,4)て正しく保存するか、さらに大きな数が必要な場合は 5 を増やします。

于 2011-11-11T09:34:31.973 に答える