namespace customTypes
{
///
/// gRPC送信用decimal
///
public partial class DecimalValue
{
private const decimal NanoFactor = 1_000_000_000;
public DecimalValue(long units, int nanos)
{
Units = units;
Nanos = nanos;
}
///
/// 暗然変換
/// decimal = DecimalValue
///
///
public static implicit operator decimal(DecimalValue grpcDecimal)
{
return grpcDecimal.Units + grpcDecimal.Nanos / NanoFactor;
}
///
/// 暗然変換
/// DecimalValue = decimal
///
///
public static implicit operator DecimalValue(decimal value)
{
var units = decimal.ToInt64(value);
var nanos = decimal.ToInt32((value - units) * NanoFactor);
return new DecimalValue(units, nanos);
}
///
/// 比較
///
///
///
public int CompareTo(DecimalValue val)
{
decimal self = this;
decimal inVal = val;
return self.CompareTo(inVal);
}
///
/// c#基本型の値を返す
///
///
public decimal ToDecimal()
{
decimal self = this;
return self;
}
///
/// 文字列
///
///
public string ToText(string format = "")
{
decimal self = this;
if (format.Length > 0) { return self.ToString(format); }
return self.ToString();
}
///
/// SQL文の値セット
///
///
public string ToSqlValue()
{
decimal self = this;
return self.ToString();
}
}
}