2015-08-26 2 views
1

I имеют следующие функциональные фрагменты:setprecision не показывает цифры

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) 
+0

Если память обслуживает некоторые из этих вызовов манипулятора, чрезвычайно эфемерны. Он все еще не работает, если вы выполняете манипулятор setprecision * перед * вы печатаете значение с плавающей запятой? –

ответ

2

Вы должны использовать манипулятор 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"; 
Смежные вопросы