Я читал, что вы должны быть осторожны с сравнениями с плавающей запятой и вычислениями в PHP. Я не эксперт в PHP, поэтому я подумал, что я попрошу сообщество, что лучший способ делать точные десятичные вычисления в PHP.
Я разрабатываю приложение timecard, где он вычисляет все время, введенное за неделю. Любое более 40 часов считается сверхурочным. Затем я хочу распространять эту сверхурочную работу через каждую запись времени, основанную на проценте, который занимает от общего времени.
Пример:
Понедельник = 10 часов
Общее время = 50 часов
Общая сверхурочная работа = 10 часов
Процент от общего времени (0,2) = понедельник (10 часов) / общее время (50 часов)
Сверхурочная работа для выделения в понедельник (2 часа) = Общая сверхурочная работа (10 часов) * Процент от общего времени (0,2)
Теперь сделайте новую запись в понедельник с 2 часами сверхурочной работы и вычтите 2 часа от оригинальной записи.
Новые записи:
Понедельник (8 часов) = Понедельник – Сверхурочная работа по выбору в понедельник (2 часа)
Понедельник Сверхурочная работа = 2 часа
Что-то плохое при использовании целых чисел в качестве исходных записей, но что будет, когда я начну использовать float и иметь несколько записей времени в день? Каждый раз, когда запись будет иметь часть общей сверхурочной работы, выделенной для него, но мне нужно убедиться, что не выделять больше сверхурочных, а затем доступно, и мне также необходимо убедиться, что общее время для каждого дня и для всего тайм-кода такое же, как изначально вошел. Я читал, что сравнение float в php небезопасно. Как мне сделать расчет. Кроме того, окончательные введенные числа должны округляться до 2 десятичных знаков (. ##)