舍入到第二个小数点

时间:2010-10-27 05:21:46

标签: c++ rounding

如何在C ++中舍入到第二个小数点。 谢谢你的帮助。

5 个答案:

答案 0 :(得分:3)

您可以乘以100然后舍入为整数。然后在前2位后面加上小数点。

例如:

void round(double x)
{
   double y = 100 * x;
   int rounded = (int)(y + 0.5);
   printf("%lf rounded = %d.%02d\n", x, rounded / 100, rounded % 100);
}

答案 1 :(得分:3)

打印双打时,您可以指定精度:

  

F,F

     

double参数被舍入并在样式[ - ] ddd.ddd中转换为十进制表示法,其中小数点字符后面的位数等于精度规范。如果缺少精度,则取6;如果精度明确为零,则不显示小数点字符。如果出现小数点,则在其前面至少出现一个数字。

尝试:

printf("%f rounded = %.2f\n", x, x);

C ++中的相同内容

std::cout << x << " rounded = " << std::setprecision(2) << x << "\n";

答案 2 :(得分:2)

如果您期望在doublefloat中获得确切的结果,则可能无法实现。许多可以用两位小数精确表示的数字根本不能用基数2浮点数表示,你得到的就是最接近的等价数。例如,无论您尝试绕过多少次,您都可能会发现1.10卡在1.1000000000000001

答案 3 :(得分:1)

您没有指定需要哪种舍入方式。 假设四舍五入到最接近的整数:

#include <math.h>
#include <stdio.h>

double round(double x) { return floor(x * 100 + 0.5) / 100; }

int main()
{
    printf("%g\n", round(12.345));
}

它打印12.35。

或者,如果您只想在小数点后打印一个四舍五入到两位数的数字:

printf("%.2f\n", x);

答案 4 :(得分:0)

查看round() for float in C++,其中讨论有关舍入浮点数,但不是2个地方。相同的基本技术应该有效。