Aus irgendeinem Grund ist 2^52 gleich 2^52 + 1 in Matlab, aber warum? Und wie kann ich das beheben? Für weitere Informationen führen Sie bitte den folgenden Code aus und überprüfen Sie die Ergebnisse.Warum 2^52 ist gleich 2^52 + 1 in Matlab? Und wie man es repariert?
Hier ist es die Ausgänge (VPA):
>> format long
>> digits(500)
>> vpa(2^52)
ans =
4503599627370496.0
>> vpa(2^52+1)
ans =
4503599627370496.0
>> isequal(vpa(2^52), vpa(2^52+1))
ans =
1
>> vpa(2^52+1)
ans =
4503599627370496.0
>> ans+1
ans =
4503599627370497.0
>> vpa(2^52+1000)
ans =
4503599627371496.0
(die Ausgänge ohne VPA)
>> 2^52
ans =
4.503599627370496e+015
>> 2^52+1
ans =
4.503599627370497e+015
>> isequal(2^52, 2^52+1)
ans =
0
>> 2^52+1
ans =
4.503599627370497e+015
>> ans+1
ans =
4.503599627370498e+015
>> 2^52+1000
ans =
4.503599627371496e+015
Edit: Dies ist kein Duplikat und hat nichts mit Gleitkommafehlern zu tun haben.
Das ist seltsam. Ich habe nur alle Befehle in Matlab ausgeführt, die Sie in Ihrem Bild haben, und habe alle erwarteten Antworten erhalten. – RSon1234
Bitte, posten Sie keine Bilder zum code. Es ist schwierig zu kopieren. Was ist dann 'vpa'? Mein Matlab hat es nicht. – Bernhard
@Bernhard es ist Variable-Precision-Arithmetik – RSon1234