5

PHP と mysql の数の上限の主な目的は何ですか?
これは、制限を超える数値を処理または保存できる/できないことを意味しますか?

エコーするPHP_INT_MAXと が表示されます2147483647

掛けると、すでに限界を超えていると思う 1000000000000000000000ような答えが得られますか?2.147483647E+30

お知らせ下さい。

ご指導ありがとうございました。

この質問は、ユーザー フォーム入力の検証について考えているときに発生します。ユーザー入力が、定義された数値形式に従っていることを確認したいと思います。
次に、ベストプラクティスをオンラインで検索し、この「制限」に気づきましたが、PHP と MYSQL を使用するときにそれを正しく処理する方法がわかりません。アドバイスお願いします:

ステップ 1: ユーザー フォーム入力の「string number」をトリミングして number に変換します。
ステップ 2: 数値が正の整数形式であることを検証します。
ステップ 3: 数が「最大制限」を超えていないことを確認します。
PHP の制限 (2,147,483,647) は mysql の制限 (18,446,744,073,709,500,000) よりも小さいのでしょうか? 私は最大制限としてphpを取ります。
ステップ 4: いくつかの計算を実行します...
ステップ 5: 結果が最大制限を超えていないことを検証します。
ステップ 6: 結果を mysql に保存します。

4

3 に答える 3

3

CPUのハードウェア限界です。bc math関数を使用して、より大きな数値を処理できます。mysql では、バイトの位置合わせに関するものであるため、どのオフセットがどの列であるかがわかります。

乗算結果はfloatに変換されます。

于 2013-09-26T09:08:10.473 に答える
0

コンピューティングの世界では、使用するコンピューター ハードウェアの数学的モデルに基づく多くの制限があります。

たとえば、整数を 1 ビットのメモリで表すことにした場合、0 と 1 を表すことができます。

8それを、1632またはのより一般的な値に増やすと64 bits、次の数の個別の値を表すことができます。

  • 2^8 - 256
  • 2^16 - 65,536
  • 2^32 - 4,294,967,296
  • または2^64 - 18,446,744,073,709,551,616

もちろん、負の数を表現できるようにしたい場合は、整数に署名することができます (負か正かを示すために 1 ビットを使用します)。a の場合、32 bit signed integerこれにより数値を表すことができます: −(2^31)to2^31 − 1または-2,147,483,648to +2,147,483,647(質問の数値と同じ上限)。

整数は間違いなく、コンピューター システムにおける数値表現の最も単純な形式です (ストレート バイナリを超えています)。制限を超えると、PHP は整数の使用から浮動小数点数の使用に切り替わります。

PHP で見られる制限はコンパイルされており、コンパイラのアーキテクチャに依存します。PHP が 32 ビットとしてコンパイルされているように見えます。

ウィキペディアで、コンピューターの数体系についてさらに詳しく読むことができます。

于 2013-09-26T09:32:22.127 に答える