PostgreSQL — какой тип данных лучше использовать для валюты?
НИКОГДА. НЕ. ПИХАЙТЕ. ДЕНЬГИ. В ЧИСЛА. С. ПЛАВАЮЩЕЙ. ЗАПЯТОЙ.

Потому что при вычислениях с плавающей запятой возникают погрешности, которые вы не сможете объяснить ни одному бухгалтеру.

Юзайте numeric, который был придуман именно, блин, для этой цели.

И запомните, что преждевременная оптимизация приносит зачастую больше проблем, чем пользы.
Вообще, если говорить о деньгах, то крайне маловероятно что у вас будут доли копеек (центов и т.п.). Поэтому, можно хранить денежные суммы в виде пары "целое число" (long) + "код валюты" (целое или строка, код валюты ISO). К этой структуре, тогда, нужно иметь справочник валют, в котором будет точность валюты т.е. множитель для перевода из рублей в копейки, из долларов в центы, из евро в евроценты (1 к 100). А, например, у юаня этот множитель будет 1, так как эти денежные единицы не делятся на доли. У биткоина этот множитель будет 10^8 (сатоши).

В результате получаем возможность оперировать с денежными суммами как с целыми, полностью избегая ошибок округления.