Рубрики
Без рубрики

Работа с наличными деньгами!

Все sênio должны знать, справиться с денежных значений в коде. Не знаете? Есть обучение! 😀. Помечено как java, с плавающей запятой, деньги, новички.

Никто не рождается Старший, становится Старший!

Стать Старший-это трудоемкий процесс, и требует много пота. Как на рынке вычислительной расширилась в геометрической прогрессии, я решил начать серию постов, быстрые на все, что Старший должен знать. Давайте в первую очередь….

Когда будем моделировать Объект, или любой другой области, всегда воображали тип данных, прежде чем они даже начать писать дано.

Мы знаем, что имя String , lastname String, дата рождения, один Date дата активации будет long или Timestamp . Мы можем даже, в некоторых языках сомнения, если мы используем один Дата или Время . Но все это зависит от выбранного языка, верно?

Неправильно!

Все зависит от того, как значение хранится в байтах. Да! Вы думаете, что существует целое число? Или string? Нет, есть байт! Только байт! И эти значения представлены в байтах. Целое число, например, 4-байтовое выравнивание. Таким образом, всего 0 является 00000000 00000000 00000000 00000000. В Java краткости 0 00000000 00000000. Легко? Не так много…

Помните числовых множеств в математике ? Итак, целые числа, простые, теперь и другие?

Когда мне нужно значение не точное, float, например? Знаете, как это хранится? Usando anotaçao с плавающей запятой .

Тогда любой суммы должны быть сохранены в Float, верно?

Неправильно!

Давайте посмотрим вблизи, некоторые операции с float или double.

Понял, почему 2.01 + 2.01 + 2.01 + 2.01 +.040999999999999 ? И не 10.041 ? 🙄 Прокатка прокатка

Проблема точности с плавающей запятой

Да, это ошибка, достаточно известен. Вы можете найти его в интернете. Он появляется, когда сделаны несколько операций com С плавающей запятой.

Видел возникнуть в систем в производстве. Это была система управления запасами и закупками. Было несколько заказ покупками, но значение не продается, ударяя себя в поле. Эту ошибку, если дал в учетной записи, просто с 5 значениями. А что, если бы 5.000 значения?

Давайте посмотрим… И если somassemos 5.000 раз 2.01 ? Должен дать 10.050 .

Ой! У нас были ошибки 0,676 ! Благоговейный трепет благоговейный трепет 😮

Решение Java

Но тише, тише. В Java эта проблема была решена с созданием класса BigDecimal .

Никакие операции кредитно-денежной должна быть сделана с float или decimal а я не видела, что ли. Эти значения следует читать как BigDecimal .

Следите За Обновлениями

  1. Если это значение инициализируется с double или float будет наследовать неточность первоначальной стоимости.
  2. Этот класс является неизменным, так что будьте внимательны. Если вы называете процесс, не позволит изменить значение экземпляра, просто создать новую!

Сохраните тебя всю жизнь. Не хранить денежные значения в double или float . Не имеет значения язык или базы данных, которую вы используете.

Если вы не знаете как решить эту проблему. Не волнуйтесь, это нормально. Завтра появится новый язык или новую базу данных и 99,99999% разработчиков не sabaerão. Поиск в Google .

Оригинал: “https://dev.to/vepo/trabalhando-com-dinheiro-52g1”