【问题标题】:setprecision does not show digitssetprecision 不显示数字
【发布时间】:2015-08-26 08:00:15
【问题描述】:

我有以下函数片段:

bool A_AbstractTester_Actor::Equals( int lineNumber, T_String valueText, double value, T_String expectedText, double expected, double accuracy )
{
    ...
    v_FailedText << std::setprecision(8) << "\nLine " << lineNumber  
     << ": EQUALS_DOUBLE FAILED, Value '" << valueText << "' (" << value 
     << "), Expected '" << expectedText << "' (" << expected << ")\n";

后来我打印 v_FailedText 结果是:

Line 242: EQUALS_DOUBLE_FAILED, Value 'step' (0), Expected '1.0' (1)

我的预期是:

Line 242: EQUALS_DOUBLE_FAILED, Value 'step' (0.00000000), Expected '1.0' (1.00000000)

【问题讨论】:

  • 如果内存服务于其中一些操纵器调用是极其短暂的。如果您在打印浮点值之前 执行 setprecision 操纵器,它仍然不起作用吗?

标签: c++ floating-point formatting


【解决方案1】:

你应该使用std::fixed操纵器。

bool A_AbstractTester_Actor::Equals( int lineNumber, T_String valueText, double value, T_String expectedText, double expected, double accuracy )
{
    ...
    v_FailedText << std::fixed << std::setprecision(8) "\nLine " << lineNumber  
     << ": EQUALS_DOUBLE FAILED, Value '" << valueText << "' (" << value 
     << "), Expected '" << expectedText << "' (" << expected << ")\n";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多