如何取前5个浮点数

时间:2014-12-09 19:04:20

标签: c++ floating-point tostring

float number=15.555555;
printf("FIRST FIVE NUMBERS%f",number); 

所需的输出:

  

FIRST FIVE NUMBERS15555

实际输出:

  

FIRST FIVE NUMBERS15.555555

如何获取5位数字并丢弃小数点?

例如:

  

123.43213 - > 12343

     

1.5634567 - > 15634

2 个答案:

答案 0 :(得分:1)

没有优雅,有些蛮力和四舍五入,你可能会这样做:

#include <cmath>
#include <iostream>

int main()
{
    double number = 15.555555;
    while(100000 <= number) number /= 10;
    while(number < 10000) number *= 10;
    // 10000.x <= number < 100000
    number = round(number);
    if(100000 <= number) number = round(number/10);
    std::cout << number << '\n';
}

注意:仅适用于大于零的数字。

答案 1 :(得分:0)

您可以随时执行以下操作:

cout << "FIRST FIVE NUMBERS" << to_string(15.555555).substr(0, 5);

那不圆或其他任何东西,但也许它是你想要的?

修改

根据Lightness Races in Orbit的评论,我认为可以从以下网址获得所需的结果:

string foo = to_string(15.555555);

for_each(foo.begin(), advance(foo.begin(), min(5, foo.size())), [](const char& i){if(i != '.')cout << i});