From e0ae477b8f8b07689b3c28df6fb2e52e8ed5221f Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Sat, 13 Apr 2013 00:00:58 -0500 Subject: [PATCH] Switch default precision to one more than the number of digits allows. See, e.g., http://stackoverflow.com/questions/4738768/printing-double-without-losing-precision. --- src/emitterstate.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/emitterstate.cpp b/src/emitterstate.cpp index 08d2c15..10c3976 100644 --- a/src/emitterstate.cpp +++ b/src/emitterstate.cpp @@ -19,8 +19,8 @@ namespace YAML m_seqFmt.set(Block); m_mapFmt.set(Block); m_mapKeyFmt.set(Auto); - m_floatPrecision.set(6); - m_doublePrecision.set(15); + m_floatPrecision.set(std::numeric_limits::digits10 + 1); + m_doublePrecision.set(std::numeric_limits::digits10 + 1); } EmitterState::~EmitterState() @@ -367,7 +367,7 @@ namespace YAML bool EmitterState::SetFloatPrecision(int value, FmtScope::value scope) { - if(value < 0 || value > std::numeric_limits::digits10) + if(value < 0 || value > std::numeric_limits::digits10 + 1) return false; _Set(m_floatPrecision, value, scope); return true; @@ -375,7 +375,7 @@ namespace YAML bool EmitterState::SetDoublePrecision(int value, FmtScope::value scope) { - if(value < 0 || value > std::numeric_limits::digits10) + if(value < 0 || value > std::numeric_limits::digits10 + 1) return false; _Set(m_doublePrecision, value, scope); return true;