# Floating Point

Discussion in 'C++' started by Bob Smith, Dec 26, 2003.

1. ### Bob SmithGuest

"" wrote:

> Hi,
>
> A pice of code.
>
> float A = 10;
> float B = 7;
> float result;
>
> result = A / B;
>
> when i run this program, i've got as result 1,4285714.... etcetc.
> is it possible to get only two or one decimals after the floating point? And how?
>
> Geert

round it
/B

Bob Smith, Dec 26, 2003

2. ### Guest

Hi,

A pice of code.

float A = 10;
float B = 7;
float result;

result = A / B;

when i run this program, i've got as result 1,4285714.... etcetc.
is it possible to get only two or one decimals after the floating point? And how?

Geert

, Dec 26, 2003

3. ### Geert JoosGuest

"Bob Smith" <> schreef in bericht
news:...
> "" wrote:
>
> > Hi,
> >
> > A pice of code.
> >
> > float A = 10;
> > float B = 7;
> > float result;
> >
> > result = A / B;
> >
> > when i run this program, i've got as result 1,4285714.... etcetc.
> > is it possible to get only two or one decimals after the floating point?

And how?
> >
> > Geert

>
> round it
> /B

And how do you do that, can you give me an example? I'm just a bit new in
C++
Thanks.
Geert
>

Geert Joos, Dec 26, 2003

Geert Joos wrote:
> "Bob Smith" <> schreef in bericht
>>
>>round it
>>/B

>
> And how do you do that, can you give me an example? I'm just a bit new in
> C++

Here's one way:

#include <iostream>
#include <cmath>

using namespace std;

int
main()
{
float A = 10;
float B = 7;

float result = A / B;

float prec = 2.0;
float shift_factor = pow(10, prec);

cout << round(result * shift_factor) / shift_factor << '\n';

return 0;
}

Note that the above method is not particularly robust, elagent, or
efficient. It's probably not even accurate for arbitrary values of
'result'. Use at your own risk.

--

5. ### AlexandrosGuest

escribiÃ³:
> Hi,
>
> A pice of code.
>
> float A = 10;
> float B = 7;
> float result;
>
> result = A / B;
>
> when i run this program, i've got as result 1,4285714.... etcetc.
> is it possible to get only two or one decimals after the floating point? And how?
>
> Geert

If what you want is to display the number with 2 decimals although it
actually has more you can do the following:

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
float a=3.239487;
float b=23.234;
float r=b/a;

cout << setprecision(3) << r << endl;

return 0;
}

Alexandros, Dec 26, 2003
6. ### Jeff SchwabGuest

wrote:
> Hi,
>
> A pice of code.
>
> float A = 10;
> float B = 7;
> float result;
>
> result = A / B;
>
> when i run this program, i've got as result 1,4285714.... etcetc.
> is it possible to get only two or one decimals after the floating point? And how?
>
> Geert

#include <iostream>

/* Truncate a number to (at most) two digits past the decimal point.
* NB: This implementation is naive.
*/
template< typename T >
T round2( T const& t )
{
return int( t * 100 ) / 100.0;
}

int main( )
{
float A = 10;
float B = 7;
float result;

result = A / B;

std::cout << result << '\n';
std::cout << round2( result ) << '\n';
}

Jeff Schwab, Dec 26, 2003
7. ### WalterGuest

"" <> wrote in message
news:...
> float A = 10;
> float B = 7;
> float result;
>
> result = A / B;
>
> when i run this program, i've got as result 1,4285714.... etcetc.
> is it possible to get only two or one decimals after the floating point?

And how?

float A = 10;
float B = 7;
float result;

result = ((long)((A * 100) / B)) / 100.0;

-Walter
www.digitalmars.com free C/C++/D compilers

Walter, Dec 27, 2003