Дроби? Не чули про таке

Привіт друзі! Ще одна замальовка з повсякденної роботи тестером. В банківському ПЗ, що я тестую, є функція керування ризиками, якщо спростити – для кожного клієнта є кілька параметрів надійності, що задаються у відсотках і впливають на суми кредитів, що максимально може дозволити банк. Щось типу (X100% + Y70%)*90% = ??? (формулу сильно спростив).
Нещодавно замовники вирішили враховувати ще один, додатковий, параметр надійності. І на етапі тестування я помітив, що в деяких випадках новий параметр просто не враховується. Прийшлось сісти з розробником разом і віддебажити код. На перший погляд все абсолютно нормально та має працювати. Беремо з бази ціле число від 0 до 100, ділимо на 100 і множимо на бажану суму грошей.
Але саме тут, власне, і сховалась помилка! Так вийшло, що в джаві, якщо поділити ціле число на інше ціле число, то в результаті ти отримаєш… ціле число. Тобто 50/100 = 0. І варто було лише змінити його тип на число з плаваючою точкою, як ми одразу отримали правильний результат: 50.0/100 = 0.5

А чи знаходили ви подібні баги, де результати обчислень були невірними через типи даних?

Позначки:
11 Лютого 2022
Автор: 
  • Як я Android додаток писав
  • Шок сенсація! Літак погладшав у польоті, а жінки помолодшали!
  • Про конференцію Kyiv QA Day 2021
  • Факапимо разом

Залишити коментар

Залишити вiдгук