Недавно я написал некоторый код, который планирует отправку сообщений на один из наших SMTP-серверов.Эти данные хранятся в базе данных MySQL.Алгоритм планирует сообщения на основе почасового лимита.Вот часть алгоритма, которая находится в цикле для планирования столько сообщений, сколько требуется.
<cfif hourlyLimit lte 60>
<cfset minutesPerMail = 60 / hourlyLimit>
<cfset minutesAdd = int(minutesPerMail)>
<cfset secondsAdd = round((minutesPerMail % 1) * 60)>
<cfset queueDate = #DateAdd('n', minutesAdd, queueDate)#>
<cfset queueDate = #DateAdd('s', secondsAdd, queueDate)#>
В целях отладки я добавил следующий код к этой части ...
<cfdump var="#minutesPerMail#"> (Outputs 1.421857...)
<cfdump var="#secondsAdd#"> (Outputs 0)
Изначально я подозреваю, что может быть ошибка округления, и поэтому я добавил следующий код ...
<cfset modTest = minutesPerMail % 1>
<cfdump var="#modTest#"> (Outputs 0)
Как вы можете видеть, используя переменную modTest,Функция модуля не работает должным образом, так как правильный вывод будет.в ноль.