3

私は PHP でプロジェクトに取り組んでおり、 のパラメーターの 1 つを使用しようとしていますが$_POST、残念ながら、パラメーターを整数としてのみ受け入れる Web サービスに結果を送信したいと考えています。したがって、型をキャストする(int)必要がありますが、この作業によりパラメーターの値が変更されます。たとえば、次のようになります。

$o =  4924869620;
$c = (int) $o;

c の値は 629902324 になります。

なぜこのようなことが起こるのですか?どうすれば値を同じに保つことができますか?? 私も使用intval()しましたが、値も変わります

4

5 に答える 5

5

32ビットシステムで実行していると思います。つまり、最大intは4294967295になり、float instadとして型キャストされます。

$c = (float) $o;
于 2012-05-25T12:50:34.107 に答える
4

整数の範囲は -2.147.483.648 で始まり、2.147.483.647 で終わります - あなたの数値は最大範囲よりも大きいです。代わりに、float などの別のデータ型を使用してください。

Float の範囲は 1.5E-45 から 3.4E38 までです ;o)

于 2012-05-25T12:48:25.890 に答える
3

数値が int に許可されている値を超えています。代わりに float または double としてキャストしてみてください。

于 2012-05-25T12:49:59.430 に答える
2

フロートとして送信するようにしてください。それが不可能な場合は、整数の配列を送信できますか? (そうであれば、数値を 4 バイトのチャンクに分割し、これらの値を格納する配列を作成することができますが、反対側では、この配列に基づいて数値を元に戻すことができます)

于 2012-05-25T13:18:02.210 に答える
0

上記のように(float) $o;4924869620 は整数ではありません。ただし、サーバーに投稿する場合、データ型は関係ありません。とにかく送信されたのはURLエンコードされた文字列であるため、数値データのみでした...

于 2012-05-25T12:59:05.880 に答える