在 C ++ 中是否有办法将确定的小数点数设置为浮点值?例如,如果我要多次记录为浮点值,我很可能会产生不同的结果(就小数位数而言),并希望生成相同长度的数字,即如果一个数字返回为{{1还有其他数字作为1.33
返回我希望将第一个结果读作1.333
。
我知道有一些限制小数位数的方法,例如1.330
,但我不想放松我的时间准确性。
答案 0 :(得分:4)
您似乎混淆了两件事:C ++中浮点计算的实际精度,以及使用C ++流打印时float
(或double
或long double
)值的格式化(比如cout,例如)。
首先取决于硬件/平台,除了在float
和double
之间进行选择之外,您无法控制它。如果您需要比long double
更精确的精度,则需要一个用于任意精度数学的库,例如GMPLIB。
当打印/格式化更容易控制点后的位数时,请参阅此问题:Set the digits after decimal point
答案 1 :(得分:1)
如果您需要限制小数点后的数字,无论是folat,double还是long double,那么就是使用(setprecision)。单独使用时,它也会包括小数点前的数字,如果小数点后的数字小于设定的精度,则不会在它们之后加零。解决方案是使用fixed和showpoint。因此,如果要将精度设置为小数点后的3位数,请在显示或计算值之前写入此行。
cout<<fixed<<showpoint<<setprecision(3);