控制小数位数

时间:2013-12-16 23:10:48

标签: c++ decimal

C ++ 中是否有办法将确定的小数点数设置为浮点值?例如,如果我要多次记录为浮点值,我很可能会产生不同的结果(就小数位数而言),并希望生成相同长度的数字,即如果一个数字返回为{{1还有其他数字作为1.33返回我希望将第一个结果读作1.333

我知道有一些限制小数位数的方法,例如1.330,但我不想放松我的时间准确性。

2 个答案:

答案 0 :(得分:4)

您似乎混淆了两件事:C ++中浮点计算的实际精度,以及使用C ++流打印时float(或doublelong double)值的格式化(比如cout,例如)。

首先取决于硬件/平台,除了在floatdouble之间进行选择之外,您无法控制它。如果您需要比long double更精确的精度,则需要一个用于任意精度数学的库,例如GMPLIB

当打印/格式化更容易控制点后的位数时,请参阅此问题:Set the digits after decimal point

答案 1 :(得分:1)

如果您需要限制小数点后的数字,无论是folat,double还是long double,那么就是使用(setprecision)。单独使用时,它也会包括小数点前的数字,如果小数点后的数字小于设定的精度,则不会在它们之后加零。解决方案是使用fixed和showpoint。因此,如果要将精度设置为小数点后的3位数,请在显示或计算值之前写入此行。

cout<<fixed<<showpoint<<setprecision(3);