Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit d00eb3d

Browse files
committed
Use round-trip for serializing floats serializes more accurately
1 parent d962056 commit d00eb3d

File tree

3 files changed

+7
-7
lines changed

3 files changed

+7
-7
lines changed

src/ServiceStack.Text/Json/JsonTypeSerializer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ public void WriteFloat(TextWriter writer, object floatValue)
281281
if (Equals(floatVal, float.MaxValue) || Equals(floatVal, float.MinValue))
282282
writer.Write(floatVal.ToString("r", CultureInfo.InvariantCulture));
283283
else
284-
writer.Write(floatVal.ToString(CultureInfo.InvariantCulture));
284+
writer.Write(floatVal.ToString("r", CultureInfo.InvariantCulture));
285285
}
286286
}
287287

src/ServiceStack.Text/Jsv/JsvTypeSerializer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ public void WriteFloat(TextWriter writer, object floatValue)
233233
if (Equals(floatVal, float.MaxValue) || Equals(floatVal, float.MinValue))
234234
writer.Write(floatVal.ToString("r", cultureInfo ?? CultureInfo.InvariantCulture));
235235
else
236-
writer.Write(floatVal.ToString(cultureInfo ?? CultureInfo.InvariantCulture));
236+
writer.Write(floatVal.ToString("r", cultureInfo ?? CultureInfo.InvariantCulture));
237237
}
238238

239239
public void WriteDouble(TextWriter writer, object doubleValue)

tests/ServiceStack.Text.Tests/JsvTests/JsvBasicDataTests.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,20 @@ public void Can_serialize_ModelWithFloatTypes()
1616
};
1717

1818
var jsv = dto.ToJsv();
19-
Assert.That(jsv,Is.EqualTo("{Float:1.1,Double:2.2,Decimal:3.3}"));
19+
Assert.That(jsv, Is.EqualTo("{Float:1.1,Double:2.2,Decimal:3.3}"));
2020

2121
var fromJsv = jsv.FromJsv<ModelWithFloatTypes>();
2222
Assert.That(fromJsv, Is.EqualTo(dto));
2323

2424
dto = new ModelWithFloatTypes
2525
{
26-
Float = 1111111.11f,
27-
Double = 2222222.22d,
28-
Decimal = 33333333.33m
26+
Float = 111111.1f,
27+
Double = 2222222.22d,
28+
Decimal = 33333333.333m
2929
};
3030

3131
jsv = dto.ToJsv();
32-
Assert.That(jsv, Is.EqualTo("{Float:1111111,Double:2222222.22,Decimal:33333333.33}"));
32+
Assert.That(jsv, Is.EqualTo("{Float:111111.1,Double:2222222.22,Decimal:33333333.333}"));
3333

3434
fromJsv = jsv.FromJsv<ModelWithFloatTypes>();
3535
Assert.That(fromJsv, Is.EqualTo(dto));

0 commit comments

Comments
 (0)