货币类型:删除货币符号而不进行类型转换

Money type: remove currency symbol without type casts

我在我的 Postgres table 中使用 MONEY 类型作为货币数据。当我 select 数据时,postgres 根据系统的 lc_monetary 设置格式化值。

我想在不使用显式类型转换的情况下删除查询结果中的货币符号(我目前正在使用 Laravel 的查询构建器。类型转换将需要原始查询)。

有没有一种方法可以设置 lc_monetary 配置设置,以便查询结果中的货币值的格式完全像具有 2 位精度且没有千位分隔符的简单浮点数(这样我就可以使用它作为我的 PHP 代码中的 string/float)?

与我交谈过的大多数人都建议不要使用货币类型。由于 LC_MONETARY 格式,通常 MONEY 类型会通过您的本地实现作为字符串输出。大多数人(包括我自己)建议使用 NUMERIC 作为您的货币价值。

您还提到将您的金钱价值放在浮动中。计算机上的浮点数自然会出现舍入误差,并可能导致货币金额出现问题,所以要小心。

在Python中,当我们需要对金钱进行数学运算时,我们使用小数class,我假设PHP也有类似的东西。

select money_column/1::资金安全吗...

根据文档,除以货币的结果是双精度....(货币抵消)。