Division in C++

25,246

Solution 1

In the expression 1 / 6, both numbers are integers. This means that this division will perform integer division, which results in 0. To do a double division, one number has to be a double: 1.0 / 6 for example.

Solution 2

Integer literals 1 and 6 have type int. Thus in the expression

1/6

there is used the integer arithmetic and the result is equal to 0.

Use at least one of the operands as a floating literal. For example

a = 1.0/6;

or

a = 1/6.0;

or

a = 1.0/6.0;
Share:
25,246
Silviu
Author by

Silviu

Updated on January 24, 2022

Comments

  • Silviu
    Silviu over 2 years

    I am new to C++ and I tried this simple code:

    #include<iostream>
    #include<math.h>
    using namespace std;
    
    int main(){
        double a;
        a=1/6;
        cout<<a;
    }
    

    But the result is 0. As I understood, double should work with real numbers, so shouldn't the result be 1/6 or 0.1666666? Thank you!

  • ranu
    ranu about 8 years
    Does this means that C++ makes implicit casting? Would be nice to add this information in your answer.
  • Vlad from Moscow
    Vlad from Moscow about 8 years
    @RafaelCamposNunes The compiler needs to determine the common type of the operands and of the result. It ises the usual arithmetic conversions of the operands converting integer types to float types if one of the operands is of floating type.