2 // System.Data.SqlTypes.SqlDouble
5 // Tim Coleman <tim@timcoleman.com>
6 // Ville Palo <vi64pa@koti.soon.fi>
8 // (C) Copyright 2002 Tim Coleman
12 using System.Globalization;
14 namespace System.Data.SqlTypes
16 public struct SqlDouble : INullable, IComparable
23 public static readonly SqlDouble MaxValue = new SqlDouble (1.7976931348623157E+308);
24 public static readonly SqlDouble MinValue = new SqlDouble (-1.7976931348623157E+308);
25 public static readonly SqlDouble Null;
26 public static readonly SqlDouble Zero = new SqlDouble (0);
32 public SqlDouble (double value)
43 get { return !notNull; }
49 throw new SqlNullValueException ();
59 public static SqlDouble Add (SqlDouble x, SqlDouble y)
64 public int CompareTo (object value)
68 else if (!(value is SqlDouble))
69 throw new ArgumentException (Locale.GetText ("Value is not a System.Data.SqlTypes.SqlDouble"));
70 else if (((SqlDouble)value).IsNull)
73 return this.value.CompareTo (((SqlDouble)value).Value);
76 public static SqlDouble Divide (SqlDouble x, SqlDouble y)
81 public override bool Equals (object value)
83 if (!(value is SqlDouble))
85 if (this.IsNull && ((SqlDouble)value).IsNull)
87 else if (((SqlDouble)value).IsNull)
90 return (bool) (this == (SqlDouble)value);
93 public static SqlBoolean Equals (SqlDouble x, SqlDouble y)
97 public override int GetHashCode ()
99 long LongValue = (long)value;
100 return (int)(LongValue ^ (LongValue >> 32));
104 public static SqlBoolean GreaterThan (SqlDouble x, SqlDouble y)
109 public static SqlBoolean GreaterThanOrEqual (SqlDouble x, SqlDouble y)
114 public static SqlBoolean LessThan (SqlDouble x, SqlDouble y)
119 public static SqlBoolean LessThanOrEqual (SqlDouble x, SqlDouble y)
124 public static SqlDouble Multiply (SqlDouble x, SqlDouble y)
129 public static SqlBoolean NotEquals (SqlDouble x, SqlDouble y)
134 public static SqlDouble Parse (string s)
136 return new SqlDouble (Double.Parse (s));
139 public static SqlDouble Subtract (SqlDouble x, SqlDouble y)
144 public SqlBoolean ToSqlBoolean ()
146 return ((SqlBoolean)this);
149 public SqlByte ToSqlByte ()
151 return ((SqlByte)this);
154 public SqlDecimal ToSqlDecimal ()
156 return ((SqlDecimal)this);
159 public SqlInt16 ToSqlInt16 ()
161 return ((SqlInt16)this);
164 public SqlInt32 ToSqlInt32 ()
166 return ((SqlInt32)this);
169 public SqlInt64 ToSqlInt64 ()
171 return ((SqlInt64)this);
174 public SqlMoney ToSqlMoney ()
176 return ((SqlMoney)this);
179 public SqlSingle ToSqlSingle ()
181 return ((SqlSingle)this);
184 public SqlString ToSqlString ()
186 return ((SqlString)this);
189 public override string ToString ()
194 return value.ToString ();
197 public static SqlDouble operator + (SqlDouble x, SqlDouble y)
200 return new SqlDouble (x.Value + y.Value);
204 public static SqlDouble operator / (SqlDouble x, SqlDouble y)
207 return new SqlDouble (x.Value / y.Value);
211 public static SqlBoolean operator == (SqlDouble x, SqlDouble y)
213 if (x.IsNull || y.IsNull)
214 return SqlBoolean.Null;
216 return new SqlBoolean (x.Value == y.Value);
219 public static SqlBoolean operator > (SqlDouble x, SqlDouble y)
221 if (x.IsNull || y.IsNull)
222 return SqlBoolean.Null;
224 return new SqlBoolean (x.Value > y.Value);
227 public static SqlBoolean operator >= (SqlDouble x, SqlDouble y)
229 if (x.IsNull || y.IsNull)
230 return SqlBoolean.Null;
232 return new SqlBoolean (x.Value >= y.Value);
235 public static SqlBoolean operator != (SqlDouble x, SqlDouble y)
237 if (x.IsNull || y.IsNull)
238 return SqlBoolean.Null;
240 return new SqlBoolean (!(x.Value == y.Value));
243 public static SqlBoolean operator < (SqlDouble x, SqlDouble y)
245 if (x.IsNull || y.IsNull)
246 return SqlBoolean.Null;
248 return new SqlBoolean (x.Value < y.Value);
251 public static SqlBoolean operator <= (SqlDouble x, SqlDouble y)
253 if (x.IsNull || y.IsNull)
254 return SqlBoolean.Null;
256 return new SqlBoolean (x.Value <= y.Value);
259 public static SqlDouble operator * (SqlDouble x, SqlDouble y)
262 return new SqlDouble (x.Value * y.Value);
266 public static SqlDouble operator - (SqlDouble x, SqlDouble y)
269 return new SqlDouble (x.Value - y.Value);
273 public static SqlDouble operator - (SqlDouble n)
275 return new SqlDouble (-(n.Value));
278 public static explicit operator SqlDouble (SqlBoolean x)
283 return new SqlDouble ((double)x.ByteValue);
286 public static explicit operator double (SqlDouble x)
291 public static explicit operator SqlDouble (SqlString x)
294 return SqlDouble.Parse (x.Value);
298 public static implicit operator SqlDouble (double x)
300 return new SqlDouble (x);
303 public static implicit operator SqlDouble (SqlByte x)
308 return new SqlDouble ((double)x.Value);
311 public static implicit operator SqlDouble (SqlDecimal x)
316 return new SqlDouble (x.ToDouble ());
319 public static implicit operator SqlDouble (SqlInt16 x)
324 return new SqlDouble ((double)x.Value);
327 public static implicit operator SqlDouble (SqlInt32 x)
332 return new SqlDouble ((double)x.Value);
335 public static implicit operator SqlDouble (SqlInt64 x)
340 return new SqlDouble ((double)x.Value);
343 public static implicit operator SqlDouble (SqlMoney x)
348 return new SqlDouble ((double)x.Value);
351 public static implicit operator SqlDouble (SqlSingle x)
356 return new SqlDouble ((double)x.Value);