Aded operators to create numerics

This commit is contained in:
DarthAffe committed 2022-08-21 23:48:24 +02:00
1 parent 49ffb4f276
commit 86c7bd2877
1 file changed
+19 -14
+19 -14
View File
@@ -38,7 +38,7 @@ namespace Artemis.Core
/// </summary> /// </summary>
public Numeric(double value) public Numeric(double value)
{ {
_value = (float) value; _value = (float)value;
} }
/// <summary> /// <summary>
@@ -58,7 +58,7 @@ namespace Artemis.Core
{ {
float value => value, float value => value,
int value => value, int value => value,
double value => (float) value, double value => (float)value,
byte value => value, byte value => value,
Numeric value => value, Numeric value => value,
_ => ParseFloatOrDefault(pathValue?.ToString()) _ => ParseFloatOrDefault(pathValue?.ToString())
@@ -133,7 +133,7 @@ namespace Artemis.Core
public static implicit operator int(Numeric p) public static implicit operator int(Numeric p)
{ {
return (int) MathF.Round(p._value, MidpointRounding.AwayFromZero); return (int)MathF.Round(p._value, MidpointRounding.AwayFromZero);
} }
public static implicit operator double(Numeric p) public static implicit operator double(Numeric p)
@@ -143,14 +143,19 @@ namespace Artemis.Core
public static implicit operator decimal(Numeric p) public static implicit operator decimal(Numeric p)
{ {
return (decimal) p._value; return (decimal)p._value;
} }
public static implicit operator byte(Numeric p) public static implicit operator byte(Numeric p)
{ {
return (byte) Math.Clamp(p._value, 0, 255); return (byte)Math.Clamp(p._value, 0, 255);
} }
public static implicit operator Numeric(double d) => new(d);
public static implicit operator Numeric(float f) => new(f);
public static implicit operator Numeric(int i) => new(i);
public static implicit operator Numeric(byte b) => new(b);
public static bool operator >(Numeric a, Numeric b) public static bool operator >(Numeric a, Numeric b)
{ {
return a._value > b._value; return a._value > b._value;
@@ -284,7 +289,7 @@ namespace Artemis.Core
/// <inheritdoc /> /// <inheritdoc />
public byte ToByte(IFormatProvider? provider) public byte ToByte(IFormatProvider? provider)
{ {
return (byte) Math.Clamp(_value, 0, 255); return (byte)Math.Clamp(_value, 0, 255);
} }
/// <inheritdoc /> /// <inheritdoc />
@@ -302,7 +307,7 @@ namespace Artemis.Core
/// <inheritdoc /> /// <inheritdoc />
public decimal ToDecimal(IFormatProvider? provider) public decimal ToDecimal(IFormatProvider? provider)
{ {
return (decimal) _value; return (decimal)_value;
} }
/// <inheritdoc /> /// <inheritdoc />
@@ -314,25 +319,25 @@ namespace Artemis.Core
/// <inheritdoc /> /// <inheritdoc />
public short ToInt16(IFormatProvider? provider) public short ToInt16(IFormatProvider? provider)
{ {
return (short) MathF.Round(_value, MidpointRounding.AwayFromZero); return (short)MathF.Round(_value, MidpointRounding.AwayFromZero);
} }
/// <inheritdoc /> /// <inheritdoc />
public int ToInt32(IFormatProvider? provider) public int ToInt32(IFormatProvider? provider)
{ {
return (int) MathF.Round(_value, MidpointRounding.AwayFromZero); return (int)MathF.Round(_value, MidpointRounding.AwayFromZero);
} }
/// <inheritdoc /> /// <inheritdoc />
public long ToInt64(IFormatProvider? provider) public long ToInt64(IFormatProvider? provider)
{ {
return (long) MathF.Round(_value, MidpointRounding.AwayFromZero); return (long)MathF.Round(_value, MidpointRounding.AwayFromZero);
} }
/// <inheritdoc /> /// <inheritdoc />
public sbyte ToSByte(IFormatProvider? provider) public sbyte ToSByte(IFormatProvider? provider)
{ {
return (sbyte) Math.Clamp(_value, 0, 255); return (sbyte)Math.Clamp(_value, 0, 255);
} }
/// <inheritdoc /> /// <inheritdoc />
@@ -356,19 +361,19 @@ namespace Artemis.Core
/// <inheritdoc /> /// <inheritdoc />
public ushort ToUInt16(IFormatProvider? provider) public ushort ToUInt16(IFormatProvider? provider)
{ {
return (ushort) MathF.Round(_value, MidpointRounding.AwayFromZero); return (ushort)MathF.Round(_value, MidpointRounding.AwayFromZero);
} }
/// <inheritdoc /> /// <inheritdoc />
public uint ToUInt32(IFormatProvider? provider) public uint ToUInt32(IFormatProvider? provider)
{ {
return (uint) MathF.Round(_value, MidpointRounding.AwayFromZero); return (uint)MathF.Round(_value, MidpointRounding.AwayFromZero);
} }
/// <inheritdoc /> /// <inheritdoc />
public ulong ToUInt64(IFormatProvider? provider) public ulong ToUInt64(IFormatProvider? provider)
{ {
return (ulong) MathF.Round(_value, MidpointRounding.AwayFromZero); return (ulong)MathF.Round(_value, MidpointRounding.AwayFromZero);
} }
#endregion #endregion