C++中小数点的数字限制

yal*_*cin 18 c++

我是C++的新手.我有双变量double a=0.1239857 我想限制a 小数点两位数的变量.所以我a0.12.我知道C++的函数返回的最大或最小整数大于或小于aceil或floor.是否有一个函数实现浮点变量的数字限制?或者我如何改变a变量的精度?

最好的祝福...

Aln*_*tak 23

你真的试图绕数字,或只是改变它的显示精度?

对于前者(截断额外数字):

double scale = 0.01;  // i.e. round to nearest one-hundreth
value = (int)(value / scale) * scale;
Run Code Online (Sandbox Code Playgroud)

或(根据jheriko的回答,适当地向上/向下舍入)

double scale = 0.01;  // i.e. round to nearest one-hundreth
value = floor(value / scale + 0.5) * scale;
Run Code Online (Sandbox Code Playgroud)

对于后者:

cout << setprecision(2) << value;
Run Code Online (Sandbox Code Playgroud)

其中参数to setprecision()是小数点后显示的最大位数.

  • 请注意,当您对显示的流使用setprecision时,它也会舍入。 (2认同)

bra*_*ray 7

这将导致小数点后两位数.

a = floor(a * 100.0) / 100.0;
Run Code Online (Sandbox Code Playgroud)


Dav*_*eau 3

你想限制变量是什么意思?值或其格式。对于值,您可以使用下限+除法。就像是:

double a = 0.12123
double b;

b = floor(a * 100) / 100
Run Code Online (Sandbox Code Playgroud)