コード例 #1
0
        // ctor
        partial void CustomInit()
        {
            if (Value == null)
            {
                // No value has been defined, initialize to 0.
                _unitlessValue = new Fraction(0);
                Format         = SuffixFormat.BinarySI;
                return;
            }

            var value = Value.Trim();

            var si = value.IndexOfAny(SuffixChars);

            if (si == -1)
            {
                si = value.Length;
            }

            var literal  = Fraction.FromString(value.Substring(0, si), CultureInfo.InvariantCulture);
            var suffixer = new Suffixer(value.Substring(si));

            _unitlessValue = literal.Multiply(Fraction.Pow(suffixer.Base, suffixer.Exponent));
            Format         = suffixer.Format;

            if (Format == SuffixFormat.BinarySI && _unitlessValue > Fraction.FromDecimal(MaxAllowed))
            {
                _unitlessValue = Fraction.FromDecimal(MaxAllowed);
            }
        }
コード例 #2
0
        //
        // CanonicalizeString = go version CanonicalizeBytes
        // CanonicalizeBytes returns the canonical form of q and its suffix (see comment on Quantity).
        //
        // Note about BinarySI:
        // * If q.Format is set to BinarySI and q.Amount represents a non-zero value between
        //   -1 and +1, it will be emitted as if q.Format were DecimalSI.
        // * Otherwise, if q.Format is set to BinarySI, fractional parts of q.Amount will be
        //   rounded up. (1.1i becomes 2i.)
        public string CanonicalizeString(SuffixFormat suffixFormat)
        {
            if (suffixFormat == SuffixFormat.BinarySI)
            {
                if (_unitlessValue > -1024 && _unitlessValue < 1024)
                {
                    return(Suffixer.AppendMaxSuffix(_unitlessValue, SuffixFormat.DecimalSI));
                }

                if (HasMantissa(_unitlessValue))
                {
                    return(Suffixer.AppendMaxSuffix(_unitlessValue, SuffixFormat.DecimalSI));
                }
            }

            return(Suffixer.AppendMaxSuffix(_unitlessValue, suffixFormat));
        }
コード例 #3
0
        // ctor
        partial void CustomInit()
        {
            var value = (Value ?? "").Trim();

            var si = value.IndexOfAny(SuffixChars);

            if (si == -1)
            {
                si = value.Length;
            }

            var literal  = Fraction.FromString(value.Substring(0, si));
            var suffixer = new Suffixer(value.Substring(si));

            _unitlessValue = literal.Multiply(Fraction.Pow(suffixer.Base, suffixer.Exponent));
            Format         = suffixer.Format;

            if (Format == SuffixFormat.BinarySI && _unitlessValue > Fraction.FromDecimal(MaxAllowed))
            {
                _unitlessValue = Fraction.FromDecimal(MaxAllowed);
            }
        }