Hello. I looked and understood the code of methods ReadDecimal and WriteDecimal on .NET platform.
1. At the moment remaking of this methods for my Java-decimal-fix is very difficult, it needs to write new methods for serialization/deserialization of negative decimals. I can make it, but there is simpler decision: to add additional byte for sign. I need advice: difficult solution (new methods .net) Versus : simple solutions (additional byte)? *I don't know yet, what changes are necessary on ะก++ platform. 2. I see a problem with the negative scale on .NET platform. Now negative scale is forbidden. We can make: if (scale < 0) return Decimal.Multiply(new decimal(lo, mid, hi, neg, 0), new decimal(Math.Pow(10, -scale))); But there is the problem: * 1 Serialize in Java; number=123456789, scale=-4 * 2 Deserialize in .NET; number=1234567890000, scale=0 * 3 Serialize in .NET; number=1234567890000, scale=0 * 4 Deserialize in Java; number=1234567890000, scale=0 Logically: (1) 123456789 * 10^4 == (2) 1234567890000 In Java (1) not equal (2), because scales are different. Any thougths? 2017-01-31 14:08 GMT+03:00 Pavel Tupitsyn <ptupit...@apache.org>: > Vyacheslav, > > I'm not sure I understand the code you attached. > > If you know how to fix the .NET part, can you just do it in your PR and > run "Platform .NET" on TeamCity to verify? > http://ci.ignite.apache.org/viewType.html?buildTypeId= > IgniteTests_IgnitePlatformNet > > Thanks, > > Pavel > > On Tue, Jan 31, 2017 at 1:35 PM, Vyacheslav Daradur <daradu...@gmail.com> > wrote: > >> Pavel, I see that you are the main contributor of Ignite.NET. >> >> We should repair BinaryUtils#ReadDecimal and BinaryUtils#WriteDecimal. >> >> *ReadDecimal: >> byte[] mag = ReadByteArray(stream); // including at least one sign bit, >> which is (ceil((this.bitLength() + 1)/8)) >> bool neg = (mag[0] < 0); >> if (scale < 0) >> // TODO: a scale of -3 means the unscaled value is multiplied by 1000 >> >> *WriteDecimal: >> int sign = vals[3] < 0 ? -1 : 0; >> stream.WriteInt(sign); >> >> Can you help with this task? >> >> >> 2017-01-31 12:46 GMT+03:00 Igor Sapego <isap...@gridgain.com>: >> >>> Vyacheslav, >>> >>> I had a look at your PR and left some comments in Jira. >>> >>> Best Regards, >>> Igor >>> >>> On Mon, Jan 30, 2017 at 12:52 PM, Vyacheslav Daradur < >>> daradu...@gmail.com> >>> wrote: >>> >>> > Hello. I fixed it. Please, review. >>> > >>> > https://issues.apache.org/jira/browse/IGNITE-3196 - Marshaling works >>> wrong >>> > for the BigDecimals that have negative scale >>> > >>> >> >> >