В зависимости от того, какой компилятор я использую, я получаю отличный вывод для этой функции при n = 0.Правильное поведение для std :: setprecision (0) в GCC vs VS2013
std::string ToStrWPrec(double a_value, const int n)
{
std::ostringstream out;
out << std::setprecision(n) << a_value;
return out.str();
}
(GCC) 4.8.3 20140911 (Red Hat 4.8.3-9) возвращает 1 для ToStrWPrec (1.2345678,0). VS2013 возвращает 1.2346 для того же кода.
мой вопрос являются:
- Что такое правильное/стандартное поведение для setprecision?
- Что было бы хорошей альтернативой использованию setprecision?
здесь обновленный код, основанный на комментарий ниже
std::string ToStrWPrec(double a_value, const int n)
{
std::ostringstream out;
out << std::setprecision(n) << std::fixed<< a_value;
return out.str();
}
Чтобы получить воспроизводимый результат, вы должны [использовать std :: fixed] (http://www.cplusplus.com/reference/ios/fixed/). MSVC++ предполагает std :: scientific, если ни один не указан. –
Это фактически решило мою проблему и обеспечило согласованный результат между GCC и VS2013. – Payman