2017-08-19 119 views
0

我想將我的數據舍入到小數點後3位,但它無法正常工作。 我寫的代碼是:在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; 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"); 
} 

rangeValue1是定義爲0的變量和rangeValue2被定義爲2.5。 我試過ceil函數,但問題是它將數字例如1.5555舍入爲2.000。我想要的是將數字加到1.556。我將rawData之前的函數ceil放在第二個句子中。

回答

1

將小數點移到您想要舍入的位置,將其舍入並移回。

ceil(value * 1000.0)/1000.0 
0

你可以簡單地乘以你的浮點值1000和ceil它,然後除以1000來達到你想要的值。

ceil(data * 1000.0)/1000.0