単純なものが欠けているかどうかはわかりませんが、次のコードは失敗します (a と b は同じであることを意味します)。
a=single(2147483584)
f=fopen('test','wb');
fwrite(f,a,'int32')
fclose(f);
f=fopen('test','rb');
b=fread(f,inf,'int32');
fclose(f)
a
b
出力付き:
a =
2.1475e+009
b =
-2.1475e+009
次のコードは成功します。
a=single(2147483583)
f=fopen('test','wb');
fwrite(f,a,'int32')
fclose(f);
f=fopen('test','rb');
b=fread(f,inf,'int32');
fclose(f)
a
b
出力付き:
a =
2.1475e+009
b =
2.1475e+009
誰かが理由を知っていますか?