Як переконатися у тому, що у вас немає проблем: Дізнайтеся про проблеми з арифметикою з плаваючою комою або наймайте когось, хто це робить, або використовуйте певний здоровий глузд.
Перша проблема - точність. У багатьох мовах у вас є "float" та "double" (подвійне стояння для "подвійної точності"), а в багатьох випадках "float" дає вам приблизно 7 цифр точності, а double - 15. Якщо в точності може виникнути проблема, 15 цифр - це набагато краще, ніж 7 цифр. У багатьох злегка проблемних ситуаціях використання "подвійного" означає, що ви з ним підете, а "пливти" означає, що ви цього не зробите. Скажімо, обмеження ринку на ринку становить 700 мільярдів доларів. Представляйте це поплавком, а найнижчий біт - 65536 доларів. Представляйте його за допомогою подвійного, а найнижчий біт - близько 0,012 копійок. Тож якщо ви насправді, дійсно не знаєте, що ви робите, ви використовуєте подвійний, а не плаваючий.
Друга проблема - це більше питання принципу. Якщо ви робите два різні обчислення, які повинні дати однаковий результат, вони часто не стають через помилки округлення. Два результати, які мають бути рівними, будуть "майже рівними". Якщо два результати близькі між собою, то реальні значення можуть бути рівними. Або вони можуть бути. Вам потрібно пам’ятати про це, і слід писати та використовувати функції, які говорять, що «x, безумовно, більше, ніж y» або «x, безумовно, менше y» або «x і y може бути рівним».
Ця проблема стає набагато гіршою, якщо ви використовуєте округлення, наприклад, "округлення х вниз до найближчого цілого числа". Якщо ви помножите 120 * 0,05, результат повинен бути 6, але те, що ви отримаєте, - це "деяке число, дуже близьке до 6". Якщо потім "округлите до найближчого цілого числа", це "число, близьке до 6", може бути "трохи менше 6" і округлюється до 5. І зауважте, що це не має значення, якою точністю у вас є. Не має значення, наскільки ваш результат ближчий до 6, якщо він менше 6.
І по-третє, деякі проблеми важкі . Це означає, що немає швидкого і простого правила. Якщо ваш компілятор підтримує "довгий подвійний" з більшою точністю, ви можете використовувати "довгий подвійний" і побачити, чи це має значення. Якщо це не має ніякого значення, то або ви добре, або у вас справжня хитра проблема. Якщо це має різницю, яку ви очікували (як, наприклад, зміна у 12-й десятковій), ви, ймовірно, добре. Якщо це дійсно змінює ваші результати, то у вас є проблема. Просити про допомогу.