Код: Выделить всё
119400
=ОКРУГЛ(A1/1000;0)
=ЦЕЛОЕ(A2/3600)
=ЦЕЛОЕ(A2/60)-A3*60
=A2-A3*3600-A4*60
119600
=ОКРУГЛ(A7/1000;0)
=ЦЕЛОЕ(A8/3600)
=ЦЕЛОЕ(A8/60)-A9*60
=A8-A9*3600-A10*60Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Код: Выделить всё
119400
=ОКРУГЛ(A1/1000;0)
=ЦЕЛОЕ(A2/3600)
=ЦЕЛОЕ(A2/60)-A3*60
=A2-A3*3600-A4*60
119600
=ОКРУГЛ(A7/1000;0)
=ЦЕЛОЕ(A8/3600)
=ЦЕЛОЕ(A8/60)-A9*60
=A8-A9*3600-A10*60или терпитLoopback писал(а):Верну исходный вариант с обрезкой по умолчанию и добавлю опцию, как округлять. Кому под вывод какой программы нужно подгонять - пусть и меняет...
Верно, нет никакой разницы, как считать. Можно начинать с часов, можно с секунд, результат будет тот же. Разница в результате плюс-минус одна секунда идёт исключительно от метода учёта миллисекунд. Либо отсекаем, либо округляем, во втором случае может появиться дополнительная секунда. Алгоритм-то простейший, не знаю, что тут можно столько обсуждать.Skif_off писал(а):Это всё понятно, тут дело в другом, как понимаю: учитывать миллисекунды и округлять или же отбрасывать их. Какие-то программы идут по первому пути, какие-то по второму, что вносит некоторую путаницу: во втором случае всегда знаешь, что у тебя может быть ещё чуток длины, а во втором может быть больше, а может быть и меньше.
Наоборот, удачный пример, как раз то, что нам нужно.AkulaBig писал(а):Неудачный пример получился. foobar в свойствах показывает только с миллисекундами. Я другого вида отображения и в стандартной версии не нашел. А в линейке показывает округленный до секунда. И вопрос остается.
Поскольку Sample rate = 44100 Hz (сэмплов в секуду), берем 21896687 и делим на 44100. Получаем 496,52351473922902494331065759637, т.е. 496 секунд (8 минут, 16 секунд) и остаток, который округлился до 524 миллисекунд.Donna Summer - I Feel Love (Extended Mix) 8:17
-
Duration : 8:16.524 (21 896 687 samples)
Код: Выделить всё
Format : MPEG Audio
File size : 18.9 MiB
Duration : 8 min 16 s
Overall bit rate mode : Constant
Overall bit rate : 320 kb/s
Track name : I Feel Love (Extended Mix)
Track name/Position : 01
Performer : Donna Summer
Audio
Format : MPEG Audio
Format version : Version 1
Format profile : Layer 3
Format settings : Joint stereo
Duration : 8 min 16 s
Bit rate mode : Constant
Bit rate : 320 kb/s
Channel(s) : 2 channels
Sampling rate : 44.1 kHz
Frame rate : 38.281 FPS (1152 SPF)
Compression mode : Lossy
Stream size : 18.9 MiB (100%)Познавательный пост у вас получился. Я со своей стороны тоже поразбирался и вот что получается.Orion9 писал(а): Поскольку Sample rate = 44100 Hz (сэмплов в секуду), берем 21896687 и делим на 44100. Получаем 496,52351473922902494331065759637, т.е. 496 секунд (8 минут, 16 секунд) и остаток, который округлился до 524 миллисекунд.


Вынужден согласиться - не получится. Это же типичный холивар "с какого конца яйцо лучше бить". Нет здесь хорошего и правильного решения. Округлишь в большую сторону - добавишь несуществующие миллисекунды. Округлишь в меньшую - потеряешь существующие миллисекунды. Обрежешь до целого - еще больше потеряешь миллисекунды. На этой дилемме ведь не один чип может сгоретьAkulaBig писал(а):Меня интересует одинаковое отображение параметров для всех программ и типов файлов, но не получится.
Вы меня не поняли. Дело не в этом. Я выше писал, что файлы ogg и opus (возможно и другие, я пишу только про которые я тестировал) показывают продолжительность в Вин Свойства другие значения. То-есть если настроить, чтобы mp3 отображались правильно, то эти расширения показываются неправильно. И наоборот. То-есть невозможно настроить, чтобы все расширения показывались в одном стиле.Orion9 писал(а): Вынужден согласиться - не получится. Это же типичный холивар "с какого конца яйцо лучше бить".
Я и правда ничего не понялAkulaBig писал(а):Вы меня не поняли. Дело не в этом. Я выше писал, что файлы ogg и opus (возможно и другие, я пишу только про которые я тестировал) показывают продолжительность в Вин Свойства другие значения. То-есть если настроить, чтобы mp3 отображались правильно, то эти расширения показываются неправильно. И наоборот. То-есть невозможно настроить, чтобы все расширения показывались в одном стиле.
Не бывает "правильно" или "неправильно", есть два подхода: одни приложения традиционно отбрасывают миллисекунды, другие традиционно округляют.AkulaBig писал(а):Свойства Windows показывает неправильно, MediaInfo показывает неправильно. ... чтобы mp3 отображались правильно
Ну, на мелко-мягких я ориентироваться не стал бы. У них расширение файла в Проводнике не показывается по-умолчанию, а вы хотите, чтобы они миллисекунды в свойствах файла отображали что ли?Я очень сомневаюсь, что мелко-мягкие используют неправильный алгоритм.
Orion9 писал(а):Я и правда ничего не понял![]()

Не бывает разных подходов в алгебре. Алгебра построена на аксиомах, а не на теоремах.Skif_off писал(а):Не бывает "правильно" или "неправильно", есть два подхода
Я выше выложил калькулятор. Выбирайте там понравившееся значимое число и увидите результат. Он всегда округляется.Skif_off писал(а): Если найдёте пример программы, которая округляет, например, по десятой доле секунды, отбрасывая сотые и тысячные, тогда можно поговорить о "неправильно".