Ich versuche, alles nach der hundertsten Dezimalstelle abzuschneiden. (13,4396 wäre 13,43) Sollte das nicht immer oder nie funktionieren?
Ich habe diese Formel, die zu 99 % funktioniert:
input = (( (double) ((int)(orgInput * 100)) ) / 100) ;
Dann habe ich diese Formelfolge, die arithmetisch äquivalent ist:
input = (orgInput * 100);
input = (int) input;
input = (double) (input);
input = input / 100;
Diese Eingaben führen nicht zum gewünschten Ergebnis (die Formel schneidet ab und rundet ab, während die aufgeschlüsselten Schritte das gewünschte Ergebnis liefern):
12.33
99.99
22.22
44.32
56.78
11.11
Und ein noch größeres Rätsel ist für mich, warum 33.30 bei keinem von ihnen funktioniert. Unten ist mein Programm, das kontinuierlich läuft, um mein Problem zu demonstrieren.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
double orgInput, input;
while (4!=3)
{
printf("Please enter the dollar amount (up to $100) => ");
scanf("%lf", &orgInput);
/* Truncates anything past hundredths place */
input = (orgInput * 100) ;
printf("\n1. input is %g \n ", input);
input = (int) input ;
printf("\n2. input is %g \n ", input);
input = (double) (input) ;
printf("\n3. input is %g \n", input);
input = input / 100 ;
printf("\n4. input is %.2lf \n", input);
input = (( (double) ((int)(orgInput * 100)) ) / 100) ;
printf("\nUsing the formula the input is %.2lf \n \n\n", input);
}
system("PAUSE");
return 0;
}
Vielen Dank im Voraus!!!! P.S. Entschuldigung für die Formatierung, ich bin noch dabei, mich an Stackoverflow zu gewöhnen
Schlüsselbegriffe: Umwandlung von Double in int Präzisionsfehler