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