Wenn Sie the documentation aussehen, heißt es
0 zurück, wenn die Konvertierung fehlschlägt.
sollten Sie
bool ok;
strTest.toInt(&ok);
verwenden und dann den Wert von ok
überprüfen - andernfalls werden Sie sich nicht sicher sein, wenn die 0 der Ist-Wert oder ein Anzeichen des Scheiterns.
In diesem Fall schlägt es fehl, weil es nicht tatsächlich eine ganze Zahl ist (es hat einen Dezimalpunkt). Beachten Sie, dass Sie toDouble
verwenden können (und dort auch ok
überprüfen können), und das Ergebnis dann wie gewünscht darstellen.
QString strTest = "-3.5";
bool ok;
double t = strTest.toDouble(&ok);
if(ok)
qDebug() << static_cast<int>(t);
Aber es ist eine gültige ganze Zahl, eine signierte ganze Zahl ist -32767 bis 32768. – SPlatten
Nein, es ist ein gültiger Gleitkomma/reelle Zahl. Eine ganze Zahl hat einen diskreten Wert. – krzaq
ok, das kann ich sehen, aber ich hätte erwartet, dass das Ergebnis abgeschnitten und -3 zurückgegeben wird. – SPlatten