# Ceil function returns the wrong number

I was trying to do this math operation and I use `ceil()` for rounding the number. But I noticed that it gives the wrong result. The output of the operation is `48.90510949` and when we round the number it must be `49`. But instead of `ceil()` gives `48`.

But when I give the number directly and without an operation, its true.

Here is the code:

``````#include <iostream>
#include <cmath>
using namespace std;

int main() {
int numberINT = ceil((67*100)/137);
float numberFLOAT = ceil((67*100)/137);
float numberFLOATsecond = ((67*100)/137);

float directNumber = 48.90510949;

cout<< numberINT<<endl;
cout<<numberFLOAT<<endl;
cout<< ceil(numberFLOATsecond)<<endl;

cout<<ceil(directNumber);

return 0;
}
``````

Here is the output:

``````48
48
48
49
``````

Any idea why is it gives this result, and a way to fix it?

### >Solution :

Your `ceil()` operations arrive too late.
Here you multiply and divide integers, which gives an integer result, then you pass this integer to the `ceil()` function but there is no decimal to deal with.

Try `ceil((67*100.0)/137);` for example; `100.0` is a `double` then the multiplication and the division are performed with `double`s and the result has decimal.
After that, `ceil()` can come into play and deal with the decimals.