ln.json/JSONNumber.cs

95 lines
1.4 KiB
C#
Raw Normal View History

2017-11-03 13:13:09 +01:00
using System;
using System.Globalization;
using System.Reflection;
2017-10-26 16:41:14 +02:00
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;
}
2017-11-03 13:13:09 +01:00
public override double Double
2017-10-26 16:41:14 +02:00
{
2017-11-03 13:13:09 +01:00
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;
}
2017-10-26 16:41:14 +02:00
}
}
2017-11-03 13:13:09 +01:00
public override string String
{
get
{
if (!Double.IsNaN(doubleValue))
{
return doubleValue.ToString();
}
else
{
return intValue.ToString();
}
}
}
public override string[] prettyPrint()
{
return new string[] { ToString() };
}
2017-10-26 16:41:14 +02:00
public override string ToString()
{
2017-11-03 13:13:09 +01:00
if (Double.IsNaN(doubleValue))
{
return this.intValue.ToString();
}
else
{
return this.doubleValue.ToString(CultureInfo.InvariantCulture);
}
2017-10-26 16:41:14 +02:00
}
2017-11-03 13:13:09 +01:00
public bool IsInteger(){
return Double.IsNaN(doubleValue);
}
2017-10-26 16:41:14 +02:00
}
}