public override (object, int) Decode(byte[] data, int position, bool packed) { (BigInteger nominator, int newPosition) = Int256.DecodeInt(data, position, packed); BigRational rational = BigRational.FromBigInt(nominator) * BigRational.Reciprocal(BigRational.Pow(BigRational.FromInt(10), Precision)); return(rational, newPosition); }
public void Test_fixed(AbiEncodingStyle encodingStyle) { AbiFixed type = AbiType.Fixed; BigRational data = BigRational.FromBigInt(123456789) * BigRational.Reciprocal(BigRational.Pow(BigRational.FromInt(10), type.Precision)); AbiSignature signature = new AbiSignature("abc", type); byte[] encoded = _abiEncoder.Encode(encodingStyle, signature, data); object[] arguments = _abiEncoder.Decode(encodingStyle, signature, encoded); Assert.AreEqual(arguments[0], data); }
public static void Calculate() { var shifterValue = "10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; var shifterFormat = shifterValue.Replace("1", string.Empty); var shifter = BigRational.FromBigInt(SN.BigInteger.Parse(shifterValue)); var pi = CalculateValue(BigRational.FromDecimal(400m)); Console.Out.Write($"{pi.GetWholePart()}."); for (var i = 0; i < 40; i++) { pi = pi.GetFractionPart() * shifter; Console.Out.Write(pi.GetWholePart().ToString(shifterFormat)); } }