如何在 C# 中将小数转换为 Google.Type.Money

How do I convert a decimal to a Google.Type.Money in C#

我的 C# 程序中有一个 decimal 值,我想将其转换为 Google.Type.Money 众所周知的原型类型。如果不手动计算单位和纳米,我该如何做到这一点?是否有执行此操作的扩展方法?

如果安装了 Google.Api.CommonProtos NuGet 包,Google.Type.Money 类型有一个 DecimalValue 属性 会自动与 .NET decimal类型。

decimal 创建一个 Google.Type.Money:

var money = new Google.Type.Money { DecimalValue = 123.45m }

访问Google.Type.Moneydecimal值:

var decimalValue = money.DecimalValue;

请注意,Google.Type.Money 是通过 int64 单位和 int32 来保存小数部分(“nanos”)实现的,因此有一些合法的 decimal 中的值不能准确地表示为 Google.Type.Money。设置 DecimalValue 将在这些情况下抛出。