使用流来打印点之后的最大十进制位置



我如何使用弦乐打印 max 在双重数的点之后(没有尾随的零且没有圆形)之后的小数位数?例如,如果我只想打印多达5个小数点:

1 -> 1
1.23 -> 1.23
1.234 -> 1.234
1.2345 -> 1.2345
1.23456 -> 1.23456
1.234567 -> 1.23456
1.2345678 -> 1.23456
1230.2345678 -> 1230.23456 <- Demonstrating that I am not talking about significant digits of the whole number either

等。

我看到的所有工具(setW,setprecision,固定等),我似乎无法弄清楚这一点。谢谢!

您绝对想使用stringstream选项执行此操作?

您可以像这样编码round函数:

double round(double n, int digits) {
    double mult = pow(10, digits);
    return floor(n*mult)/mult;
}

然后只打印round(1.2345678, 5)

没有内置的方式来执行此操作(据我所知)。但是,可能会有类似的黑客:

void print_with_places(double num, unsigned places) {
   for (double i = 1; i < num; i*=10) { //have to use a double here because of precision...
      ++places;
   }
   std::cout << std::setprecision(places) << num;
}

它不是一个假的,但它是那个或将其打印到字符串然后操纵字符串。

相关内容

  • 没有找到相关文章

最新更新