2

C#、.netに基づいています

サーバーは 64 ビット マシンで、クライアントは 32 ビット マシンで、double[] 配列がクライアントに送信されます。クライアントでは、このデータを使用してバイナリファイルが作成されます。

サーバーが 64 ビットでクライアントが 32 ビットであるため、doule 値が破損する可能性はありますか。

4

2 に答える 2

1

いいえ、.NET が送信と受信の両方を行っている場合は違います。

また、送受信の方法によっても異なります。TCP はストリーム ベースです。つまりsocket.Send()、単一のsocket.Receive().

于 2012-10-11T06:09:50.350 に答える
0

次の記事は、使用しているシステム(32ビットまたは64ビット)によって精度が影響を受ける例を示しています。

MSDN-二重構造

例を提供する抜粋:

さらに、Double値を使用した算術演算と代入演算の結果は、Doubleタイプの精度が失われるため、プラットフォームによってわずかに異なる場合があります。たとえば、リテラルのDouble値を割り当てた結果は、.NETFrameworkの32ビットバージョンと64ビットバージョンで異なる場合があります。次の例は、リテラル値-4.42330604244772E-305と値が-4.42330604244772E-305の変数がDouble変数に割り当てられている場合のこの違いを示しています。この場合のParse(String)メソッドの結果は、精度の低下に悩まされないことに注意してください。

サーバー上のアプリケーションのターゲットプラットフォームをx86に設定することをお勧めします。これは私の理解です(間違っている場合は訂正してください)。これにより、実際に実行しているものに関係なく、精度が32ビットマシンと同等になります。

于 2012-10-11T06:43:31.847 に答える