Yes, that's my issue. It seems that if you somehow tell is there are multiple zeros is keeps than and displays them during the .ToString(). This is what I ended up doing: private class JsonTextWriterOptimized : JsonTextWriter { public JsonTextWriterOptimized(TextWriter textWriter) : base(textWriter) { }
public override void WriteValue(decimal value) { // we really really really want the value to be serialized as "0.0000" not "0.00" or "0.0000"! //This is very important for all our hash calculations *value = Math.Round(value, 4); * * value = Math.Round((((value+0.00001M)/10000)*10000)-0.00001M, 4); // divide first to force the appearance of 4 decimals* base.WriteValue(value); } } The I use this writer during the serialization. That will make 123.12 > 123.1200 and even 100 to 100.0000 :) On Sun, Aug 11, 2013 at 5:34 PM, Mark Hurd <markeh...@gmail.com> wrote: > Note that, obviously, one of Decimal's claims to fame is that it > considers trailing zeros as significant, so serializing /should/ > record those details. > > If you want to adjust that, use Decimal.Round(value, 2), but note that > this does not add trailing zeros, only removes extras. > > -- > Regards, > Mark Hurd, B.Sc.(Ma.)(Hons.) > > > On 11 August 2013 14:32, Corneliu I. Tusnea <corne...@acorns.com.au> > wrote: > > Hi, > > > > Anyone working today? > > > > How can I force the NewtonSoft Json Serializer to serialize two decimals > the > > same way? decimal a = 1234.1200M; decimal b = 1234.12M; > > > > var sa = JsonConvert.SerializeObject(new { value = a }); > > var sb = JsonConvert.SerializeObject(new {value = b}); > > Console.WriteLine(sa); > > Console.WriteLine(sb); > > > > Results are: {"value":1234.1200} {"value":1234.12} > > > > How can I force it to serialize them both with 4 decimals so the results > are > > identical? > > > > Even simpler, ignoring the serializer, how can I make sa.ToString() == > > sb.ToString() ? > > The Json Serializer is only doing a simple .ToString() behind the scenes. > > > > Regards, > > Corneliu > > >