-1

I tried the C cast style as shown below but to no avail

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    std::vector<int> intVec = { 1, 2, 3 };
    std::vector<float> floatVec;
    for (int i = 0; i < intVec.size(); i++)
    {
        float new_num = (float)intVec[i];
        floatVec.push_back(new_num);
    }
        

    for (int i = 0; i < floatVec.size(); i++)
        cout << floatVec[i] << endl;

    return 0;
}

Output in console:

1
2
3

What am I doing wrong for not getting { 1.0, 2.0, 3.0} as a result?

Paul Ogilvie
  • 25,048
  • 4
  • 23
  • 41
Yannick
  • 59
  • 7

1 Answers1

3

Use std::fixed with cout, like this:

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    std::vector<int> intVec = { 1, 2, 3 };
    std::vector<float> floatVec;
    for (int i = 0; i < intVec.size(); i++)
    {
        float new_num = (float)intVec[i];
        floatVec.push_back(new_num);
    }
        

    for (int i = 0; i < floatVec.size(); i++)
        cout << std::fixed << floatVec[i] << endl;

    return 0;
}

Output

1.000000
2.000000
3.000000

If you want to set the decimal precision, you can use std::setprecision

gaurav bharadwaj
  • 1,669
  • 1
  • 12
  • 29