using System; using System.Globalization; using System.Reflection; namespace sharp.json { public class JSONNumber: JSON { Int64 intValue; Double doubleValue; public JSONNumber() :base(JSONTypes.Number) { intValue = 0; doubleValue = Double.NaN; } public JSONNumber(Int64 i) :base(JSONTypes.Number) { intValue = i; doubleValue = Double.NaN; } public JSONNumber(Double d) :base(JSONTypes.Number) { intValue = (Int64)d; doubleValue = d; } public override double Double { get { if (!Double.IsNaN(doubleValue)){ return doubleValue; } else { return (double)intValue; } } } public override long Integer { get { if (!Double.IsNaN(doubleValue)){ return (int)doubleValue; } else { return intValue; } } } public override string String { get { if (!Double.IsNaN(doubleValue)) { return doubleValue.ToString(); } else { return intValue.ToString(); } } } public override string[] prettyPrint() { return new string[] { ToString() }; } public override string ToString() { if (Double.IsNaN(doubleValue)) { return this.intValue.ToString(); } else { return this.doubleValue.ToString(CultureInfo.InvariantCulture); } } public bool IsInteger(){ return Double.IsNaN(doubleValue); } } }