用于货币值的 PostgreSQL 和 MONEY 数据类型

Yan*_*hon 11 postgresql money floating-point postgresql-9.3

对于一个项目,我创建了一个带有列的表price MONEY NOT NULL。而且我认为它会正确处理小数,与浮点数(即 IEEE 舍入问题)不同,但我最终$9.94从数据库返回了像(字符串)这样的值,而不是9.94(数字)。必须通过删除美元符号来手动操作字段值是愚蠢的;有没有办法让一MONEY列没有货币符号?

如果不是,处理货币价值的最佳数据类型替换是什么?

Eva*_*kas 11

那这个呢?

货币值可以转换为数字而不损失精度。转换为其他类型可能会失去精度,并且还必须分两个阶段完成:

SELECT '52093.89'::money::numeric::float8;
Run Code Online (Sandbox Code Playgroud)

来源:http : //www.postgresql.org/docs/9.1/static/datatype-money.html

  • **从不** 将货币值转换为浮点数/从浮点数转换。您将失去精度并产生细微的舍入误差。 (6认同)