如果我想传输任意精度的十进制值,在我的protobuf定义文件中使用什么正确的标量类型?
我在我的Go代码中使用shopspring/decimal而不是float64来防止数学错误。 当编写protobuf文件以便通过gRPC传输这些值时,我可以使用:
double
,它转换为float64string
,它在自己的方式上肯定是精确的,但让我感觉很笨拙- 类似于mgravell / protobuf-net中的decimal?
传统智慧告诉我在货币应用程序中避免使用浮点数,但我可能过于小心,因为这是序列化的一个要点。
decimal
方法不是任意精度的;它只是我在 .NET 的System.Decimal
中所需的。对于跨平台的任意精度,我可能会选择使用string
。而且,是的:绝对要避免在金融应用中使用float
/double
。 - Marc Gravell