postgresql - PostgreSQL 上 float 的模运算

标签 postgresql floating-point modulo

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

我可以看到 SQL 中不正式支持 fmod 等。有什么合理的解决办法吗?

最佳答案

自己创建这样的函数很简单:

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)

这个函数可以内联,所以它应该非常高效。

关于postgresql - PostgreSQL 上 float 的模运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53486669/

相关文章:

postgresql - 为 PostgreSQL 中的记录变量动态传递列名

postgresql - 如何使用 SSL/TLS 在 CircleCI 中运行 PostgreSQL?

c++ - 一些浮点精度和数值限制问题

c - 将双关语输入整数并排序

java - 公式计算不正确

python - SQLAlchemy 公用表表达式返回值

java - 仅使用数学获取整数小数部分

java - Java 和 VBScript 中模数的区别

modulo - 当第一个数字较小时,模运算如何进行?

postgresql 触发器 - 而不是插入不起作用