【发布时间】:2022-10-20 21:09:57
【问题描述】:
我正在尝试在查询中执行以下计算:
t0.value1::decimal * 10 ^ (-1 * t2.value2::decimal) * t0.value3::decimal as total_value
但是,由于(-1 * t2.value2::decimal) 返回 -18,所有结果都四舍五入为 0。我尝试明确说明十进制小数位数和精度//将其更改为数字但得到相同的输出。
只要(-1 * t2.value2::decimal) 是,它就可以正常工作大于 -10 且小于 10(如果小数位数小于 10).
如何解决?
UPD:这是数据样本
| value1 | value2 | value3 |
|---|---|---|
| 4600000000000000000 | 18 | 4631.012195988508 |
| 5000000000000000000 | 18 | 3273.4212494812623 |
| 18 | 2422.052197425213 | |
| 25000000000000000000 | 18 | 2549.800132829858 |
| 9690000000000000000 | 18 | 4109.547860742057 |
| 5980000000000000000 | 18 | 2957.913800830533 |
| 4200000000000000000 | 18 | 3410.6366004760075 |
| 8000000000000000000 | 18 | 3902.894047163281 |
| 6000000000000000000 | 18 | 4604.587023538565 |
【问题讨论】:
-
你能提供一些值吗?
-
-18 < 10 但根据您的描述它不起作用。我无法复制:
select 10^(-18); 1e-18。您将需要提供一些实际的示例输入数据和输出数据。 -
@DannySlor 添加了一些值,请看一下
-
@AdrianKlaver 更新了描述并提供了一些示例输入数据,请看一下
-
问题似乎在这里
(-1 * t2.value2::decimal)将其更改为(-1 * t2.value2)并且它消失了。还不知道为什么。什么版本的 Postgres?
标签: sql database postgresql decimal numeric