Ich habe Probleme mit STRTOF-Konvertierungen, einige Werte funktioniert es gut, aber eine andere gibt es +1 oder -1 des Werts zurück. Mein Programm liest den Wert aus einer Datei, aber der Einfachheit halber habe ich versucht, den Wert direkt auf strtof zu setzen, und es hat das gleiche Verhalten.C: STRTOF falsche Konvertierung von einer Einheit
Mein einfachen Code:
#include <stdlib.h>
int main(int argc, char **argv)
{
printf("%f", strtof("17309217",NULL));
}
Es gibt
17309216.000000
Der gleiche Wert, den es gibt, wenn ich "17309216" oder "17309215" zu konvertieren.
Ich habe einige weitere Tests gemacht und es scheint ein "Muster", "17309214" funktioniert gut, aber "17309213", "17309212" und "17309211" alle zurück "17309212". Danach funktioniert "17309210" gut, aber "17309209", "17309208" und "17309207" geben "17309208" usw. zurück.
Was ist die Erklärung für dieses Verhalten? Jetzt konvertiere ich die Zeichenfolge mit anderen Methoden, ich brauche keine Methode, um sie zu konvertieren. Ich möchte nur wissen, warum strtof das macht, also kann ich entscheiden, wo ich es verwenden kann und wo nicht.
Ich habe einige andere Fragen zu falschen Konvertierungen gelesen, aber alle beziehen sich auf die Dezimalrundung, nicht eine ganze Einheit.
Vielen Dank im Voraus,
Vielleicht wollten Sie ** strtod ** verwenden und ** double ** s verwenden –