在C ++中截断

问题描述 投票:0回答:1

对于我的任务,我需要输出说是66.66而不是66.67。我不希望它四舍五入。

cout << fixed << setprecision(2);
cout << balloon_point;

这将产生66.66666并将其输出为66.67,我需要66.66。我不知道如何截断,也无法在线找到任何内容。任何事情都会有所帮助。

c++ output truncate truncation
1个回答
0
投票

尝试一下:

Live sample

#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
}
© www.soinside.com 2019 - 2024. All rights reserved.