我numeric在 postgres 中有一个值为1.9999999999999999(比例为 16)的类型,我运行一个计算(1.9999999999999999+2)/2. 确切的答案应该是1.99999999999999995(比例应该是 17),但我得到2.0000000000000000(比例仍然是 16),因为numeric超出了默认的精度/比例。
我可以通过运行查询和做来解决这个问题(1.9999999999999999+2)/2::numeric(1000,999),但是当我检索保存到数据库中的这个值时,它实际上在 SELECT 查询输出中出现了 1000 个“0”数字。
我该如何执行以下任一操作?
- 告诉 postgres 永远不要在超过比例时舍入一个值,而是自动增加比例
- 告诉postgres不要在小数点后存储尾随的“0”数字,只保留它需要的最小位数,这样我就可以使用尽可能高的比例
::numeric(1000,999),但它只存储必要的数字?
我想为我对数值执行的任何操作获得精确的结果,以达到 postgres 允许的最大精度,但不存储不必要的尾随“0”数字。就像您手动计算它时期望它如何工作一样。