type Scale … // infScale adapts a Scale value to an inf.Scale value. func (s Scale) infScale() inf.Scale { … } const Nano … const Micro … const Milli … const Kilo … const Mega … const Giga … const Tera … const Peta … const Exa … var Zero … var zeroBytes … type int64Amount … // Sign returns 0 if the value is zero, -1 if it is less than 0, or 1 if it is greater than 0. func (a int64Amount) Sign() int { … } // AsInt64 returns the current amount as an int64 at scale 0, or false if the value cannot be // represented in an int64 OR would result in a loss of precision. This method is intended as // an optimization to avoid calling AsDec. func (a int64Amount) AsInt64() (int64, bool) { … } // AsScaledInt64 returns an int64 representing the value of this amount at the specified scale, // rounding up, or false if that would result in overflow. (1e20).AsScaledInt64(1) would result // in overflow because 1e19 is not representable as an int64. Note that setting a scale larger // than the current value may result in loss of precision - i.e. (1e-6).AsScaledInt64(0) would // return 1, because 0.000001 is rounded up to 1. func (a int64Amount) AsScaledInt64(scale Scale) (result int64, ok bool) { … } // AsDec returns an inf.Dec representation of this value. func (a int64Amount) AsDec() *inf.Dec { … } // Cmp returns 0 if a and b are equal, 1 if a is greater than b, or -1 if a is less than b. func (a int64Amount) Cmp(b int64Amount) int { … } // Add adds two int64Amounts together, matching scales. It will return false and not mutate // a if overflow or underflow would result. func (a *int64Amount) Add(b int64Amount) bool { … } // Sub removes the value of b from the current amount, or returns false if underflow would result. func (a *int64Amount) Sub(b int64Amount) bool { … } // Mul multiplies the provided b to the current amount, or // returns false if overflow or underflow would result. func (a *int64Amount) Mul(b int64) bool { … } // AsScale adjusts this amount to set a minimum scale, rounding up, and returns true iff no precision // was lost. (1.1e5).AsScale(5) would return 1.1e5, but (1.1e5).AsScale(6) would return 1e6. func (a int64Amount) AsScale(scale Scale) (int64Amount, bool) { … } // AsCanonicalBytes accepts a buffer to write the base-10 string value of this field to, and returns // either that buffer or a larger buffer and the current exponent of the value. The value is adjusted // until the exponent is a multiple of 3 - i.e. 1.1e5 would return "110", 3. func (a int64Amount) AsCanonicalBytes(out []byte) (result []byte, exponent int32) { … } // AsCanonicalBase1024Bytes accepts a buffer to write the base-1024 string value of this field to, and returns // either that buffer or a larger buffer and the current exponent of the value. 2048 is 2 * 1024 ^ 1 and would // return []byte("2048"), 1. func (a int64Amount) AsCanonicalBase1024Bytes(out []byte) (result []byte, exponent int32) { … } type infDecAmount … // AsScale adjusts this amount to set a minimum scale, rounding up, and returns true iff no precision // was lost. (1.1e5).AsScale(5) would return 1.1e5, but (1.1e5).AsScale(6) would return 1e6. func (a infDecAmount) AsScale(scale Scale) (infDecAmount, bool) { … } // AsCanonicalBytes accepts a buffer to write the base-10 string value of this field to, and returns // either that buffer or a larger buffer and the current exponent of the value. The value is adjusted // until the exponent is a multiple of 3 - i.e. 1.1e5 would return "110", 3. func (a infDecAmount) AsCanonicalBytes(out []byte) (result []byte, exponent int32) { … } // AsCanonicalBase1024Bytes accepts a buffer to write the base-1024 string value of this field to, and returns // either that buffer or a larger buffer and the current exponent of the value. 2048 is 2 * 1024 ^ 1 and would // return []byte("2048"), 1. func (a infDecAmount) AsCanonicalBase1024Bytes(out []byte) (result []byte, exponent int32) { … }