Also versuche ich einen Code zu schreiben, der es mir erlaubt eine Zahl auf 3 Dezimalstellen aufzurunden. Mein Code für eine Reihe Aufrundung war wie folgt aus:Rundungsfunktion in C
for (rowIndex = 0; rowIndex < MAX_ROWS; rowIndex++)
{
for (columnIndex = 0; columnIndex < MAX_COLUMNS; columnIndex++)
{
printf("%.3f ", ceil(rawData[rowIndex][columnIndex] * 1000.0)/1000.0);
}
}
Aber gestern mein Lehrer sagte uns, um einen Code zu verwenden, die eine Struktur wie folgt hat:
float roundValue(float value, int decimalPlaces)
{
// Place rounding code here
return value;
}
ich bin nicht ganz sicher, wie man schreibt der Code in diesem Format! Ich bin ein Anfänger in der Programmierung, also könnte das so albern sein.
UPDATE: so habe ich nur alle Kommentare gelesen und versucht, den Code zu schreiben, aber immer noch ein Problem. Mein Code ist:
double roundValue(double value, int decimalPlaces)
{
value = roundf(value * pow(10, decimalPlaces))/pow(10, decimalPlaces);
return value;
}
int main(void)
{
int rowIndex = 0;
int columnIndex = 0;
double rawData[MAX_ROWS][MAX_COLUMNS]; // 2-dimensional array to store our
raw data
double value = rawData[MAX_ROWS][MAX_COLUMNS];
int decimalPlaces = 3;
// Print out the roundup data array
printf(" --- ROUNDED DATA ---\n");
for (rowIndex = 0; rowIndex < MAX_ROWS; rowIndex++)
{
for (columnIndex = 0; columnIndex < MAX_COLUMNS; columnIndex++)
{
printf("%.3f ", roundValue(value, 3));
}
printf("\n");
}
return 0;
}
es gibt mir nur 0 für alle Zahlen.
Sie müssen Ihre Fragen klären und Schritte beschreiben, die Sie bereits versucht haben ... – PureW
Also, fragen Sie Ihren Lehrer? Und wenn Sie schon dabei sind, sagen Sie ihm, dass 'float' im Allgemeinen eine ** schreckliche ** Idee ist, wegen seiner begrenzten Präzision ... –
Wenn Sie die Fließkomma-Binärdarstellung verstanden hätten, würden Sie nicht" * denken * "von 3 Nachkommastellen. Wenn Sie * WIRKLICH * 3 Dezimalstellen benötigen, versuchen Sie es mit einem Festkommaformat. –