// 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); } }
// // 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)); }
// 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); } }