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