У меня есть столбец значений bigint, например. 62639999999999993, и я хочу разделить его на 10^18 (точно). Кажется очень разумным, я должен получить 0,062639999999999993. Вместо этого я продолжаю получать 0,06263999999999999.
Я пытался преобразовать столбец BIGINT в точный числовой тип данных, прежде чем делить его, но я продолжаю получать неправильный ответ на то, что, казалось бы, должно быть очень простым.
Я также пробовал вариант SET extra_float_digits = 3
безрезультатно.
Это какая-то проблема с моим ПК? Это 64-разрядная база данных PostgreSQL 12.4 на моем локальном рабочем столе под управлением Windows 10. ЦП — i7-10700k с 16 ГБ ОЗУ. Нет разгона.
DECIMAL
для произвольной точности. . - person Amadan   schedule 23.04.2021SELECT v / CAST (10 AS DECIMAL(100, 50)) ^ 18 FROM t
дает0.06263999999999999300000000000000000000000000000000
. Если вы пишете10^18
, это число с плавающей запятой, а не десятичное (или числовое; да, они идентичны). - person Amadan   schedule 23.04.2021