Такая ситуация, пишу приложение в котором пользователь указывает необходимое кол-во товара после чего видит итоговую сумму(ценаТовара*КолВо). Проблема в следующем, т.к. в java вот это выражение:
double a = 2.0 - 1.1;
равно не 0.9 , а вот чему 0.89999999999999991 , то возник такой вопрос, как мне считать общую сумму товара, чтобы избежать подобных неточностей? Цена за единицу товара у меня представлена типом float
, с ним такие же проблемы? Думал округлять итоговую сумму до двух знаков, но тут тоже кажется могут быть проблемы, и наличие погрешности в расчетах зависит прямо пропорционально от кол-ва умножаемого на цену товара, чем больше тем больше погрешность.
Зачем такие сложности, начинайте всегда с простого. Тем более вы находитесь на этапе разработки. Храните суммы в типе int, а потом просто поделите на 100 для получения копеек. Например, стоимость = 52025 руб, что означает 520 руб 25 коп.
Преимущества:
Не все десятичные дроби можно точно представить в виде double
или float
. Это связано с особенностью хранения данных в формате с плавающей точкой.
При работе с финансами можно использовать класс BigDecimal
, который обеспечит необходимую точность.
В Вашем случае:
BigDecimal value = new BigDecimal("2.0").subtract(new BigDecimal("1.1"));
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
У меня есть скрипт на питоне который генерит текстовые файлы с данными '(with open('/data_min_out
Добрый леньЕсть метод, нужно получить данные в виде список массивов строк из карты, где в данном виде хранятся значения
Где найти список api методов для openfire? Если у вас есть ссылка дайте пожалуйста ссылку
В приложение Telegram есть кнопка Delete conversationВ TELEGRAM API есть возможность удалить беседу?