如何将一个 double 型数保留 n 位小数?

4

我正在尝试在标准库中找到一个round函数,但是没有看到。有没有办法在C++中将双精度数四舍五入到n个小数位?


floor(v*pow(10,n)+0.5)/pow(10,n)。 - Vaughn Cato
1个回答

12

C++11在<cmath>中提供了std::round

如果没有它,您可以在调整后的数字上使用std::floor和std::ceil进行舍入。例如,std::floor(n * 100 + 0.5)/100 可以四舍五入到两位小数。

需要注意的是,舍入并不是完全简单的操作;存在一些复杂性,例如��择向零舍入、向负无穷大舍入、舍入为偶数等。如果您正在编写生产程序,请确保了解您所在领域的舍入要求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接