#flutter #dart #currency #currency-formatting
#flutter #dart #Валюта #форматирование валюты
Вопрос:
Общеизвестно, что типичные типы данных с плавающей запятой (они же float
и double
) находятся в базе 2, поэтому плохо подходят для хранения денег, потому что базовые числа 2 не всегда могут точно представлять базовые числа 10, такие как деньги. Чтобы избежать этой проблемы, в таких языках, как Java, реализованы такие типы данных, как BigDecimal . Существует ли какой-либо аналогичный тип данных для Dart / Flutter?
Комментарии:
1. Если это законная проблема, используйте пакет decimal . При этом, если вы действительно имеете дело с деньгами, они не должны храниться в вашем приложении, а вместо этого извлекаться / храниться в другом месте, а ваше приложение извлекает данные только из одного источника истины. И если приложение не связано с хранением и манипулированием, подойдет 64-разрядный вариант с плавающей запятой,
double
поскольку он теряет точность значимым образом только при работе с очень большими или очень маленькими числами или когда многие из них объединяются с течением времени.2. Вы также можете использовать
int
s, которые представляют количество центов (или любую другую наименьшую единицу валюты, которую вам нужно обработать) вместо количества долларов.
Ответ №1:
Как сказал Abion47, лучшим способом хранения денег было бы использовать пакет decimal, который похож на BigDecimal в Java и имеет множество полезных функций.