postgresql - PostgreSQL上浮点数的模运算
问题描述
我希望在 PostgreSQL 中的两个浮点整数之间执行模运算。具体来说,我希望强制执行角度算术,例如在一些数学运算之后强制角度位于区间 [0,2*pi] 内。
我可以看到fmod
SQL 不正式支持此类。有什么合理的解决方法吗?
解决方案
自己创建这样的函数很简单:
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)
这个函数可以内联,所以它应该非常有效。
推荐阅读
- ios - JSON在swift中仅解析特定键
- ios - 关闭模态视图控制器 iOS 后无法切换到 TabBarController
- magento-1.9 - Magento 1.9 - 添加到购物车不适用于某些产品
- python - Python - 比较来自两个不同 csv 的两列中的相似值
- c# - 与较新版本的系统程序集绑定编译失败
- python - 如何使用 any() 测试两个数组是否重叠
- linux - 获取 PIC 的中断屏蔽寄存器 (IMR) 并禁用一个特殊的 IRQ
- c++ - 错误 C2027 或 C2029 取决于定义顺序
- javascript - Webpack 4:生成共享依赖项
- wordpress - WordPress 如何对数字和对象使用转义功能,例如 post_type