Rhino.Decompiler.AddNumber C# (CSharp) Method

AddNumber() private method

private AddNumber ( double n ) : void
n double
return void
		internal virtual void AddNumber(double n)
		{
			AddToken(Token.NUMBER);
			long lbits = (long)n;
			if (lbits != n)
			{
				// if it's floating point, save as a Double bit pattern.
				// (12/15/97 our scanner only returns Double for f.p.)
				lbits = System.BitConverter.DoubleToInt64Bits(n);
				Append('D');
				Append((char)(lbits >> 48));
				Append((char)(lbits >> 32));
				Append((char)(lbits >> 16));
				Append((char)lbits);
			}
			else
			{
				// we can ignore negative values, bc they're already prefixed
				// by NEG
				if (lbits < 0)
				{
					Kit.CodeBug();
				}
				// will it fit in a char?
				// this gives a short encoding for integer values up to 2^16.
				if (lbits <= char.MaxValue)
				{
					Append('S');
					Append((char)lbits);
				}
				else
				{
					// Integral, but won't fit in a char. Store as a long.
					Append('J');
					Append((char)(lbits >> 48));
					Append((char)(lbits >> 32));
					Append((char)(lbits >> 16));
					Append((char)lbits);
				}
			}
		}