diff --git a/CHANGELOG.md b/CHANGELOG.md index 59bec1aa0..a532127ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ ## 4.11.0 [unreleased] +### Bug Fixes + - Revert [#408] conversion of double to string can result in a loss of precision + ## 4.10.0 [2023-01-26] ### Bug Fixes diff --git a/Client.Test/MeasurementMapperTest.cs b/Client.Test/MeasurementMapperTest.cs index 8875449c4..cfa9b9381 100644 --- a/Client.Test/MeasurementMapperTest.cs +++ b/Client.Test/MeasurementMapperTest.cs @@ -57,8 +57,7 @@ public void ColumnWithoutName() var lineProtocol = _mapper.ToPoint(poco, WritePrecision.S).ToLineProtocol(); - Assert.AreEqual( - "poco,tag=tag\\ val value=15.444000000000001,ValueWithEmptyName=25,ValueWithoutDefaultName=20i 864000", + Assert.AreEqual("poco,tag=tag\\ val value=15.444,ValueWithEmptyName=25,ValueWithoutDefaultName=20i 864000", lineProtocol); } @@ -112,8 +111,7 @@ public void MeasurementProperty() var lineProtocol = _mapper.ToPoint(poco, WritePrecision.S).ToLineProtocol(); - Assert.AreEqual( - "poco,tag=tag\\ val value=15.444000000000001,ValueWithEmptyName=25,ValueWithoutDefaultName=20i 864000", + Assert.AreEqual("poco,tag=tag\\ val value=15.444,ValueWithEmptyName=25,ValueWithoutDefaultName=20i 864000", lineProtocol); } diff --git a/Client.Test/PointDataTest.cs b/Client.Test/PointDataTest.cs index 7ada8fec8..02bd39b43 100644 --- a/Client.Test/PointDataTest.cs +++ b/Client.Test/PointDataTest.cs @@ -149,24 +149,7 @@ public void FieldTypes() var expected = "h2o,location=europe boolean=false,byte=9i,decimal=25.6,double=250.69,float=35,integer=7i,long=1i," + - "point=13.300000000000001,sbyte=12i,short=8i,string=\"string value\",uint=11u,ulong=10u,ushort=13u"; - - Assert.AreEqual(expected, point.ToLineProtocol()); - } - - [Test] - public void DoubleFormat() - { - var point = PointData.Measurement("sensor") - .Field("double", 250.69D) - .Field("double15", 15.333333333333333D) - .Field("double16", 16.3333333333333333D) - .Field("double17", 17.33333333333333333D) - .Field("example", 459.29587181322927); - - var expected = - "sensor double=250.69,double15=15.333333333333332,double16=16.333333333333332," + - "double17=17.333333333333332,example=459.29587181322927"; + "point=13.3,sbyte=12i,short=8i,string=\"string value\",uint=11u,ulong=10u,ushort=13u"; Assert.AreEqual(expected, point.ToLineProtocol()); } diff --git a/Client/Writes/PointData.cs b/Client/Writes/PointData.cs index 10f06d82d..7abb2cd21 100644 --- a/Client/Writes/PointData.cs +++ b/Client/Writes/PointData.cs @@ -472,15 +472,10 @@ private bool AppendFields(StringBuilder sb) EscapeKey(sb, key); sb.Append('='); - if (value is float) + if (value is double || value is float) { sb.Append(((IConvertible)value).ToString(CultureInfo.InvariantCulture)); } - else if (value is double) - { - var valueStr = ((double)value).ToString("G17", CultureInfo.InvariantCulture); - sb.Append((IConvertible)valueStr); - } else if (value is uint || value is ulong || value is ushort) { sb.Append(((IConvertible)value).ToString(CultureInfo.InvariantCulture));