Страницы: 1
RSS
Как правильно делить время пополам, разные варианты деления дают разный результат
 
Добрый день, коллеги.

Недовно столкнулась с такой ситуацией:

1) Беру два отрезка времени, которые заканчиваются на нечетное количество секунд 01:24:31  и  00:00:31 соответственно
2) Делю их пополам, получаю какое-то число. Для интереса смотрю на него в двух форматах - время и числовой формат
3) Беру те же исходные даты в числовом формате и сразу делю их пополам. Для интереса смотрю на него в двух форматах - время и числовой формат

В результате ответ в формате времени не совпадает, а в числовом формате совпадает. Почему так получается? И как этого избегать?
 
Изменено: msmolyakova@gmail.com - 12.03.2025 19:05:38 (картинка не отображается)
 
Цитата
msmolyakova@gmail.com написал:
Почему так получается?
, а вы попробуйте делить не набранное вручную, а просто сделайте ссылку на ячейку с данными и поделите на 2.
 
Код
C4</f><v>1.7939814814814815E-4
F4</f><v>1.7939814814814801E-4

а вот почему так - кто его знает... наверняка набранное вручную отсекает микромиллисекунды
Изменено: Hugo - 12.03.2025 19:36:57
 
Когда вы работаете с временем в Excel, оно интерпретируется как дробная часть дня. Например, время 01:24:31 соответствует дробной части дня, равной 0.05869212962962963. Когда вы делите время пополам, результатом является дробное число, которое можно интерпретировать как время или как числовое значение. Однако, когда преобразуете это дробное число обратно в формат времени, Excel округляет его до ближайшей секунды, что может привести к расхождениям.

Если точность важна, лучше работать с числовыми значениями времени. Это позволит избежать проблем с округлением при преобразовании в формат времени.
One tap - one kill
 
msmolyakova@gmail.com, измените имя
Согласие есть продукт при полном непротивлении сторон
 
Цитата
написал:
, а вы попробуйте делить не набранное вручную, а просто сделайте ссылку на ячейку с данными и поделите на 2
Да, я пробую и так и так, о получаю разный результат.

При этом я визуально вижу, что результат разный, но когда сразник=ваю эти две ячейки через =ячейка1=ячейка2 , то мне приходит результат - ИСТИНА. Хотя я глазами вижу что в одной ячейке 15 секунд, а в другой 16 секунд
 
Цитата
написал:
а вот почему так - кто его знает... наверняка набранное вручную отсекает микромиллисекунды
Интересно, а у меня в обеих ячейках С4 и F4 в экспоненциальном формате показывает значение
1,7939814814814800000E-04
Да, я тоже считаю, что под капотом он считает какую-то свою точность, которую не передает при копировании

Меня удивляет еще, почему когда он делит 1:24:31 на 2, то получает на конце 15 секунд, а когда делит при всех тех же параметрах 0:00:31 пополам, то получает 16 секунд. Какие-то разные правила округления
 
Цитата
написал:
Когда вы работаете с временем в Excel, оно интерпретируется как дробная часть дня. Например, время 01:24:31 соответствует дробной части дня, равной 0.05869212962962963. Когда вы делите время пополам, результатом является дробное число, которое можно интерпретировать как время или как числовое значение. Однако, когда преобразуете это дробное число обратно в формат времени, Excel округляет его до ближайшей секунды, что может привести к расхождениям.Если точность важна, лучше работать с числовыми значениями времени. Это позволит избежать проблем с округлением при преобразовании в формат времени.
Да, я это понимаю. Я не понимаю, почеру эксель в разных случаях округляет по разному. Ну то есть когда он делит 1:24:31 на 2, то получает на конце 15 секунд, а когда делит при всех тех же параметрах 0:00:31 пополам, то получает 16 секунд.

В Plex видела какие-то формулы округления времени. Может они помогут?
 
Цитата
написал:
Я не понимаю, почеру эксель в разных случаях округляет по разному.
Вполне вероятно, что это проблема при отображении результата в зависимости от применённого форматирования. И что самое забавное, он сохраняет точность внутренне, но может округлять по-разному, в итоге. Теперь я тоже обратил на это внимание.

А чтобы согласовать эти результаты, действительно, можно обратиться к функциям, как вы и вспомнили.

Для точных расчётов времени без проблем с округлением используйте функцию TIME:
Код
=TIME(HOUR(A1/2),MINUTE(A1/2),SECOND(A1/2))
Если нужно конкретно контролировать округление, можно использовать функцию MROUND для значений времени:
Код
=MROUND(A1/2,"0:00:01")
Для точного контроля на уровне секунд можно преобразовать в секунды, выполнить операцию и преобразовать обратно:
Код
=TEXT(((HOUR(A1)*3600+MINUTE(A1)*60+SECOND(A1))/2)/86400,"h:mm:ss")

Думаю, должно сработать.
One tap - one kill
 
Цитата
написал:
А чтобы согласовать эти результаты, действительно, можно обратиться к функциям, как вы и вспомнили
Большое спасибо! Обязательно попробую
Страницы: 1
Читают тему
Наверх