gpt4 book ai didi

c - C 中的舍入函数

转载 作者:太空宇宙 更新时间:2023-11-04 08:01:46 24 4
gpt4 key购买 nike

所以我正在尝试编写一个代码,它可以让我将任何数字向上舍入到小数点后 3 位。我的四舍五入代码是这样的:

for (rowIndex = 0; rowIndex < MAX_ROWS; rowIndex++)
{
for (columnIndex = 0; columnIndex < MAX_COLUMNS; columnIndex++)
{
printf("%.3f ", ceil(rawData[rowIndex][columnIndex] * 1000.0) / 1000.0);
}
}

但是昨天我的老师告诉我们使用具有如下结构的代码:

float roundValue(float value, int decimalPlaces)
{
// Place rounding code here
return value;
}

我不太确定如何以这种格式编写代码!我是编码初学者,所以这可能很愚蠢。

更新:所以我只是阅读了下面的所有评论并尝试编写代码但仍然有问题。我的代码是:

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;
}

它只给我所有数字 0。

最佳答案

基于 this answer ,您可以使用 math.h 中的 roundf 函数:

#include <stdio.h>
#include <math.h>

/* function that rounds a float to the specified number of decimals */
float roundValue(float value, int decimalPlaces)
{
value = roundf(value * pow(10, decimalPlaces)) / pow(10, decimalPlaces);
return value;
}


/*to see the results: */
int main()
{
float value = 12.34567;
printf("%f", roundValue(value, 3));
return 0;
}

Compilation/run:

$ gcc -lm main.c
$ ./a.out
12.346000

关于c - C 中的舍入函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46014032/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com