我应该在 GraphQL 中使用整数来表示货币价值吗?

Rud*_*eim 1 json dataformat graphql

我知道在编程时我应该使用整数来表示“货币价值”。我知道这是因为0.1 + 0.2 != 0.3问题。但我不太了解这个问题,无法知道这是否也是数据格式(如 JSON)中的问题。

在我的具体情况下:我应该定义

type Money {
    amount: Float!
    # ...
}

Run Code Online (Sandbox Code Playgroud)

或者

type Money {
    amount: Int!
    # ...
}

Run Code Online (Sandbox Code Playgroud)

在 GraphQL 中?

Xuo*_*riG 5

一般来说,代表金钱是一个难题。处理货币、格式、分数与非分数货币等。

将 Money 建模为复杂的对象类型通常是一个好主意。这使您能够在货币价值的上下文中编码更多数据。另一种选择是定义您自己的代表货币的标量类型。

一个很好的例子是 Shopify 的 GraphQL API:https ://help.shopify.com/en/api/graphql-admin-api/reference/object/moneyv2

它们包括货币和金额,定义为十进制标量。拥有复杂的对象也可以让您随着时间的推移更好地发展该类型。如果您添加诸如服务器端格式或货币信息之类的内容,则使用IntFloat将难以发展。