Операция по модулю над числами с плавающей запятой в PostgreSQL - PullRequest
0 голосов
/ 26 ноября 2018

Я хочу выполнить операцию по модулю между двумя целыми числами с плавающей точкой в ​​PostgreSQL.В частности, я хочу применить арифметику углов, например, заставить углы лежать в интервале [0,2 * pi] после некоторых математических операций.

Я вижу, fmod или такое официально не поддерживается в SQL.Есть ли разумное решение?

1 Ответ

0 голосов
/ 26 ноября 2018

Создать такую ​​функцию самостоятельно - тривиально:

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)

Эта функция может быть встроенной, поэтому она должна бытьдовольно эффективно.

...