diff --git a/OpenMetaverse.StructuredData/StructuredData.cs b/OpenMetaverse.StructuredData/StructuredData.cs index 11179ecc..5e370ae3 100644 --- a/OpenMetaverse.StructuredData/StructuredData.cs +++ b/OpenMetaverse.StructuredData/StructuredData.cs @@ -457,7 +457,8 @@ namespace OpenMetaverse.StructuredData } public override double AsReal() { return value; } - public override string AsString() { return value.ToString(Utils.EnUsCulture); } + // "r" ensures the value will correctly round-trip back through Double.TryParse + public override string AsString() { return value.ToString("r", Utils.EnUsCulture); } public override byte[] AsBinary() { return Utils.DoubleToBytesBig(value); } public override string ToString() { return AsString(); } } diff --git a/OpenMetaverse.Tests/NotationLLSDTests.cs b/OpenMetaverse.Tests/NotationLLSDTests.cs index c58a64b1..a99f9b73 100644 --- a/OpenMetaverse.Tests/NotationLLSDTests.cs +++ b/OpenMetaverse.Tests/NotationLLSDTests.cs @@ -261,8 +261,6 @@ namespace OpenMetaverse.Tests OSD llsdSixDS = OSDParser.DeserializeLLSDNotation(sSix); Assert.AreEqual(OSDType.Real, llsdSixDS.Type); Assert.AreEqual(2.0193899999999998204e-06, llsdSixDS.AsReal()); - - } [Test()] diff --git a/OpenMetaverse.Tests/XmlLLSDTests.cs b/OpenMetaverse.Tests/XmlLLSDTests.cs index fa56d43d..4eef25dd 100644 --- a/OpenMetaverse.Tests/XmlLLSDTests.cs +++ b/OpenMetaverse.Tests/XmlLLSDTests.cs @@ -74,7 +74,7 @@ namespace OpenMetaverse.Tests 4 active task count 0 - pending uploadsB + pending uploads 0.0001096525 diff --git a/OpenMetaverse/Types/UtilsConversions.cs b/OpenMetaverse/Types/UtilsConversions.cs index 2e324a06..280610cf 100644 --- a/OpenMetaverse/Types/UtilsConversions.cs +++ b/OpenMetaverse/Types/UtilsConversions.cs @@ -706,6 +706,8 @@ namespace OpenMetaverse /// True if the parse was successful, otherwise false public static bool TryParseDouble(string s, out double result) { + // NOTE: Double.TryParse can't parse Double.[Min/Max]Value.ToString(), see: + // http://blogs.msdn.com/bclteam/archive/2006/05/24/598169.aspx return Double.TryParse(s, System.Globalization.NumberStyles.Float, EnUsCulture.NumberFormat, out result); }