Loopback
|
Posted: Mon Nov 04, 2024 20:17 Post subject: |
|
|
AkulaBig wrote: | А вот при преобразовании в часы, минуты, секунды не надо округлять секунды, а потом от этого округления высчитывать продолжительность. |
Так в том-то и дело, что сейчас именно так работает TimingFormat. После внесенных в сентябре изменений. И тогда такой вариант был сочтен правильным. И если сейчас
Quote: | Хотелось-бы увидеть эти изменения в плагине, для стандартных форматов продолжительности. |
их приводить к одному варианту, то к какому? Потому что сейчас ваш Custom - миллисекунды обрезает, а стандартный TimingFormat - миллисекунды округляет.
AkulaBig wrote: | Это очень тонкий момент. К сожалению под рукой нет учителя математики, чтобы подтвердить правоту этого выражения. Похоже это соответствует правилам именно при преобразовании в часы, минуты, секунды. В любом случае MI работает именно по подобному алгоритму. |
Внутренне функция Integer - это дельфийская функция Trunc, которая просто отсекает дробную часть.
AkulaBig wrote: | Как я писал выше, видимо именно так должно происходить преобразование. Может у вас есть толковое словесное описание, как должно происходить преобразование? Я такого в инете не нашел. Я думаю тут причина в том, что есть разница между округлением и преобразованием. Ведь это не округление. |
Преобразование так или иначе будет включать в себя избавление от миллисекунд (дробной части). И этот процесс - вопрос реализации. Нет "правильных" и "неправильных", есть просто разные подходы. Если не брать банковскую специфику их три: округление по математическим правилам (Round), до меньшего (Floor) и большего (Ceiling). MediaInfo использует Floor. Плагин тоже использовал его, в сентябре переделали на Round.
AkulaBig wrote: | Дак в этом и дело, что мы не можем отследить алгоритм преобразования. |
Исходники MediaInfo открыты...
Ну вот по-видимому оно, в этом файле функция Duration_Duration123. Насколько я могу судить, округления тут не производится. |
|