【问题标题】:Controlling the amount of decimal places控制小数位数
【发布时间】:2013-12-16 23:10:47
【问题描述】:

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

我知道有一些方法可以限制小数位数,例如 setprecision(),但我不想失去时间的准确性。

【问题讨论】:

标签: c++ decimal


【解决方案1】:

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

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

在打印/格式化时控制点后的位数更容易,例如看这个问题:Set the digits after decimal point

【讨论】:

  • 获得比floats 更精确的最简单方法是使用doublelong double
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    相关资源
    最近更新 更多