Wenn Sie die gleiche Zahl halten wollen, sollten Sie auf jeden Fall double
verwenden es zu konvertieren:
double
In doppelte Genauigkeit konvertieren.
double(X)
gibt den doppelten Genauigkeitswert für X
zurück.
Während typecast
hält die interne Darstellung, das heißt die Bytes gleich gehalten oder aber anders interpretiert:
Convert Datentypen ohne Änderung der zugrundeliegenden Daten typisieren.
Y = typecast(X, DATATYPE)
konvertieren X zu DATATYPE. Wenn DATATYPE hat
weniger Bits als die Klasse von X, Y wird mehr Elemente als X haben, wenn
DATATYPE mehr Bits als die Klasse von X hat, wird Y weniger
Elemente als X. haben
Beachten Sie, dass typecast
nur dann verwendet werden kann, wenn die Anzahl der Bytes gleich ist. Dies gilt nicht für double
, da versucht wird, die gleiche Zahl so genau wie möglich in doppelter Genauigkeit darzustellen. Sie können beispielsweise uint32
nicht in double
eingeben, aber Sie können zwei uint32
in eine double
Nummer eingeben. Wenn Sie double
verwenden, um es zu konvertieren, erhalten Sie jeweils ein und zwei Doppel.
C++ Äquivalent
X = double(uint64(123));
=>int64_t x = 123; double X = x;
X = typecast(uint64(123), 'double')
=>int64_t x = 123; double X = reinterpret_cast<double>(x);
bekomme ich das gleiche mit typecast oder double! – hello123
@emanbap Sie müssen sicherstellen, dass temp Uint64 ist. – user1876942