对于我的任务,我需要输出说是66.66而不是66.67。我不希望它四舍五入。
cout << fixed << setprecision(2);
cout << balloon_point;
这将产生66.66666并将其输出为66.67,我需要66.66。我不知道如何截断,也无法在线找到任何内容。任何事情都会有所帮助。
尝试一下:
#include <iostream>
#include <string>
int count(long n) //cout the number of integer digits
{
if (n == 0)
return 0;
return 1 + count(n / 10);
}
std::string trunc(float num, int digits) //remove the excess decimal places
{
std::string str = std::to_string(num).substr(0, digits + 1);
if (str.find('.') == std::string::npos || str.back() == '.')
{
str.pop_back();
}
return str;
}
int main()
{
float num = 12348.567890;
long num2 = num;
std::cout << trunc(num, count(num2) + 2) << '\n'; //2 is number of decimal places
}