Ich wurde beauftragt, printf in C ohne externe Bibliotheken neu zu erstellen. Ich versuche% f-Funktionalität mit einer Genauigkeit von 6 Dezimalstellen zu implementieren. Also grundsätzlich, wenn ich 15.2554 in die printf-Funktion übergebe, sollte "15.255400" gedruckt werden. Stattdessen wird "15.255399" gedruckt. Mein Code, um die Dezimalstellen zu finden als solche implementiert:Rundungsfehler beim Konvertieren von Double in Char
print_function(double input){
int i = 0;
int temp;
double temp_dub;
char temp_char;
temp = (int)input;
temp_dub = input - temp;
while (i < 6){
temp_dub = temp_dub * 10;
temp = (int) temp_dub;
temp_char = (char) (temp+48)
write(1,&temp_char,1);
i++;
temp_dub -= (int) temp_dub;
}
return;
}
Kann jemand bitte beleuchten mir, warum ich nicht in der Lage, die nachgestellten Nullen zu erhalten und stattdessen diese Zahl nur leicht unter meinem Eingang von 15,554?
'C' und' C++ 'sind ** verschiedene ** Sprachen. Ein Tag wird eindeutig nicht benötigt. – Ari0nhh
Ihre Funktion zeigt Müll für 15.554 an. Stellen Sie sicher, dass Sie das richtige Code-Snippet gepostet haben. – DyZ
Dieser Code könnte in C oder C++ funktionieren, wenn ich mich nicht irre. – Heisenberg