在PostgreSQL上对浮点数进行模运算

时间:2018-11-26 18:02:21

标签: postgresql floating-point modulo

我希望在PostgreSQL中的两个浮点整数之间执行模运算。具体来说,我希望执行角度算术,例如经过一些数学运算后,迫使角度位于区间[0,2 * pi]。

我可以看到fmod或SQL不正式支持这样的语言。有合理的解决方法吗?

1 个答案:

答案 0 :(得分:1)

自己创建这样的功能很简单:

CREATE FUNCTION fmod (
   dividend double precision,
   divisor double precision
) RETURNS double precision
    LANGUAGE sql IMMUTABLE AS
'SELECT dividend - floor(dividend / divisor) * divisor';

您可以使用它来解决您的问题:

SELECT fmod(1000, 2.0 * pi());

       fmod        
-------------------
 0.973536158445768
(1 row)

此函数可以内联,因此应该非常有效。