Floating Point

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

  1. Bob Smith

    Bob Smith Guest

    round it
    /B
     
    Bob Smith, Dec 26, 2003
    #1
    1. Advertisements

  2. Bob Smith

    geertjoos 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?

    Thanks in advance.
    Geert
     
    geertjoos, Dec 26, 2003
    #2
    1. Advertisements

  3. Bob Smith

    Geert Joos Guest

    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
    #3
  4. Bob Smith

    Adam Fineman Guest

    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.

    - Adam
     
    Adam Fineman, Dec 26, 2003
    #4
  5. Bob Smith

    Alexandros Guest

    escribió:
    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
    #5
  6. Bob Smith

    Jeff Schwab Guest



    #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
    #6
  7. Bob Smith

    Walter Guest

    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
    #7
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.