在C编程中,将数字四舍五入到小数点后3位

在C编程中,将数字四舍五入到小数点后3位,c,C,我试图将我的数据四舍五入到小数点后3位,但它不能正常工作。 我写的代码是: //Check and round up raw data printf(" --- ROUNDED DATA ---\n"); for (rowIndex = 0; rowIndex < MAX_ROWS; rowIndex++) { // Read up until the last value for (columnIndex = 0; columnIndex < MAX_COLUMNS

我试图将我的数据四舍五入到小数点后3位,但它不能正常工作。 我写的代码是:

//Check and round up raw data
printf(" --- ROUNDED DATA ---\n");
for (rowIndex = 0; rowIndex < MAX_ROWS; rowIndex++)
{
    // Read up until the last value
    for (columnIndex = 0; columnIndex < MAX_COLUMNS; columnIndex++)
    {
        if (rawData[rowIndex][columnIndex] < rangeValue1)
            printf("%.3f ", rangeValue1);
        else if (rawData[rowIndex][columnIndex] > rangeValue2)
            printf("%.3f ", rangeValue2);
        else
            printf("%.3f ", rawData[rowIndex][columnIndex]);
    }

    printf("\n");
}
//检查并汇总原始数据
printf(“---四舍五入数据---\n”);
对于(rowIndex=0;rowIndexrangeValue2)
printf(“%.3f”,范围值2);
其他的
printf(“%.3f”,原始数据[行索引][列索引]);
}
printf(“\n”);
}
rangeValue1是定义为0的变量,rangeValue2定义为2.5。
我尝试了ceil函数,但问题是它将数字舍入,例如1.5555到2.000。我想要的是把数字四舍五入到1.556。在最后一句的第二句中,我将函数ceil放在了rawData之前。

将小数点移动到要进行四舍五入的位置,执行四舍五入并将其移回

ceil(value * 1000.0) / 1000.0

您只需将浮点值乘以1000,然后再除以1000即可得到所需的值

ceil(数据*1000.0)/1000.0