如何在C ++中舍入到第二个小数点。 谢谢你的帮助。
答案 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)
如果您期望在double
或float
中获得确切的结果,则可能无法实现。许多可以用两位小数精确表示的数字根本不能用基数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个地方。相同的基本技术应该有效。