172 похожих чатов

Всем привет! Подскажите есть типы float4 и float8 а как

к примеру создать типы float5 и float6?

34 ответов

43 просмотра

Зачем?

Максим-Ильченко Автор вопроса
central hardware
Зачем?

Примерно для таких запросов select latitude, longitude, count(1) from location.point group by round(latitude, 6), round(longitude, 6) Но с ним проблема [42883] ERROR: function round(double precision, integer) does not exist Подсказка: No function matches the given name and argument types. You might need to add explicit type casts. Позиция: 6

Максим-Ильченко Автор вопроса
Максим Ильченко
А в чем? Как лечить?

покажите пример данных пожалуйста

Максим-Ильченко Автор вопроса
canc3l
покажите пример данных пожалуйста

В latitude может быть что угодно от 55 до 55.9999999999999999999 так же с longitude 3356 и т.д

canc3l
я бы кастил/триммил

а еще использовал бы postgis если еще не поздно, но тут меня могут заплевать коллеги по цеху

Максим-Ильченко Автор вопроса
Максим-Ильченко Автор вопроса
canc3l
а еще использовал бы postgis если еще не поздно, н...

Мне дубликаты найти надо и кол-во и потом возможно отчистить.

Максим Ильченко
Мне дубликаты найти надо и кол-во и потом возможно...

тогда кастите как удобный для вас формат и потом rtrim

Максим-Ильченко Автор вопроса
Sergey Bezrukov
Возьмите PostGIS и не парьтесь

Не тут как раз надо запарится чтоб на продуктив установить. А тут для начала надо попросту посчитать.

Максим-Ильченко Автор вопроса
canc3l
тогда кастите как удобный для вас формат и потом r...

Можно пример? Достаточно такого вида. select round(55.635531177945, 6)

Максим Ильченко
Не тут как раз надо запарится чтоб на продуктив ус...

Если у вас есть операции с координатами - то закат солнца вручную это, конечно, увлекательно, но не слишком оптимально.

Максим-Ильченко Автор вопроса
Sergey Bezrukov
Если у вас есть операции с координатами - то закат...

Будем считать что операции float. Но я учту что с PostGIS будет шутсрее при частых выборках?

Максим-Ильченко Автор вопроса
canc3l
а что там за тип данных в поле сейчас? флот4?

Просто float к float4 приводил чтоб посчитать. Так как round(longitude, 4) не завелся. Так же надо для 5 и 6 посчитать.

Максим Ильченко
Будем считать что операции float. Но я учту что с ...

Там специально спроектированные типы данных и функции над ними - для расчёта дистанций, пересечений и т.п.

Максим Ильченко
Просто float к float4 приводил чтоб посчитать. Так...

Гсподь с вами, никогда не используйте флот если есть хоть мизерный шанс этого избежать

Максим Ильченко
Мне это не надо

а группировка по округлённым координатам вам тогда зачем?

canc3l
Гсподь с вами, никогда не используйте флот если ес...

не, ну почему, если на точность пофиг, а скорость вычислений важна... не так много таких случаев бывает, но бывают.

Максим-Ильченко Автор вопроса
Sergey Bezrukov
а группировка по округлённым координатам вам тогда...

Будем считать что нужна группировка по float5 и 6 по примеру float4.

Максим Ильченко
Будем считать что нужна группировка по float5 и 6 ...

тогда приводите к типу, который можно триммить и вперед.

Максим Ильченко
Будем считать что нужна группировка по float5 и 6 ...

Что такое в вашем понимании float4? Если вы думаете что это float с 4 знаками после запятой, то это не так.

Максим-Ильченко Автор вопроса
Sergey Bezrukov
Что такое в вашем понимании float4? Если вы думает...

Можете пояснить? Просто результат получаю примерно одинаковый select round(55.635531177945, 6) --- 55.635531 select 55.635531177945::float4 --- 55.635532

Максим Ильченко
Можете пояснить? Просто результат получаю примерн...

https://postgrespro.ru/docs/postgrespro/14/datatype-numeric#DATATYPE-FLOAT Затрудняюсь что-нибудь к этому прибавить

Максим Ильченко
Будем считать что операции float. Но я учту что с ...

С постгис того жэ по скорости и точности результата можно добиться мЕньшыми усилиями программистов.

Максим Ильченко
Будем считать что нужна группировка по float5 и 6 ...

На Си это относительно простая функцыя (один правильный & ), но 1) Именно для абсолютных координат это очень глубоко безсмысленно. 2) Вы, наверняка, непонимаете — что это округление будет делать т как, потому вряд ли его напишэте.

Мистер, float 4 и 8 -- это не количество десятичных цифр [после запятой], а сколько байт оно занимает. Знаков в них 9 и 19 соответственно. Эти конкретные типы поддержаны в процессоре, поэтому используют именно их. Если нужна точность где-то посередине, используйте всё равно float8 aka double

alex che
Мистер, float 4 и 8 -- это не количество десятичны...

> Знаков в них 9 и 19 соответственно. Примерно 8 и примерно 16 (чуть меньшэ, на самом деле).

Ilya Anfimov
> Знаков в них 9 и 19 соответственно. Примерно 8 ...

Да, вы правы. 53 двоичных знака, 53*lg2 = 15.95 Я перепутал, видимо, как раз с 10-байтовым, там 64 мантисса

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта