Тип данных для денег в Dart / Flutter

#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 и имеет множество полезных функций.