
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
17.11.2020, 20:27
|
|||
|---|---|---|---|
Проблема округления даты (Double) |
|||
|
#18+
Помогите! На Delphi 7 следующий код возвращает 0 Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2020, 20:29
|
|||
|---|---|---|---|
Проблема округления даты (Double) |
|||
|
#18+
D1 и D2 - точно даты со временем после преобразования? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2020, 20:34
|
|||
|---|---|---|---|
Проблема округления даты (Double) |
|||
|
#18+
wadman D1 и D2 - точно даты со временем после преобразования? я уже не помню точно, но не должна ли быть D1 меньше (либо равна) D2 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2020, 20:39
|
|||
|---|---|---|---|
Проблема округления даты (Double) |
|||
|
#18+
Все хуже: HoursBetween = Round((D2-D1)*24) (ABS я пропустил) Так вот (D2-D1)*24 = 0.99999 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2020, 20:48
|
|||
|---|---|---|---|
|
|||
Проблема округления даты (Double) |
|||
|
#18+
А если так? Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2020, 20:54
|
|||
|---|---|---|---|
|
|||
Проблема округления даты (Double) |
|||
|
#18+
Lisichkin, Посмотрите в DateUtils код HoursBetween. В XE3 такое Код: pascal 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2020, 21:46
|
|||
|---|---|---|---|
Проблема округления даты (Double) |
|||
|
#18+
в древнем xe7/8 всё чОтко ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2020, 21:50
|
|||
|---|---|---|---|
|
|||
Проблема округления даты (Double) |
|||
|
#18+
Может, в системе у ТС нестандартный формат времени? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2020, 22:01
|
|||
|---|---|---|---|
Проблема округления даты (Double) |
|||
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.11.2020, 22:11
|
|||
|---|---|---|---|
Проблема округления даты (Double) |
|||
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.11.2020, 12:53
|
|||
|---|---|---|---|
|
|||
Проблема округления даты (Double) |
|||
|
#18+
DimaBr, Там Trunc вместо Round стоит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.11.2020, 12:57
|
|||
|---|---|---|---|
Проблема округления даты (Double) |
|||
|
#18+
_Vasilisk_, Ну вообще это логично: 59 минут - это не час. Но вот погрешность они не учли... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.11.2020, 13:25
|
|||
|---|---|---|---|
Проблема округления даты (Double) |
|||
|
#18+
Ещё один повод перейти с Delphi 7 на что-то более новое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.11.2020, 17:42
|
|||
|---|---|---|---|
Проблема округления даты (Double) |
|||
|
#18+
К сожалению, в рамках моего проекта перейти на другую версию не возможно. Лечится так (взял кусок из Delphi XE): Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. P.S. Даты произвольны и никогда не приходят в систему из StrToDateTime - а взяты из базы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.11.2020, 17:44
|
|||
|---|---|---|---|
Проблема округления даты (Double) |
|||
|
#18+
Извращенец. (D1-D2) * 24 = кол-во часов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.11.2020, 18:42
|
|||
|---|---|---|---|
Проблема округления даты (Double) |
|||
|
#18+
rgreat Извращенец. (D1-D2) * 24 = кол-во часов. Не работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.11.2020, 19:02
|
|||
|---|---|---|---|
|
|||
Проблема округления даты (Double) |
|||
|
#18+
DimaBr Не работает Trunc((D1 - D2) * 24 + 1 / 36000001) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.11.2020, 20:58
|
|||
|---|---|---|---|
Проблема округления даты (Double) |
|||
|
#18+
_Vasilisk_ DimaBr Не работает Trunc((D1 - D2) * 24 + 1 / 36000001) формула отработает правильно, если D1 > D2 Если D1 < D2, то будет отрицательное значение +1 лишний час ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.11.2020, 21:19
|
|||
|---|---|---|---|
Проблема округления даты (Double) |
|||
|
#18+
DimaBr rgreat Извращенец. (D1-D2) * 24 = кол-во часов. Не работает Работа функции Round не соответствует твоим ожиданиям? ;) Что ты написал - то и получил. Чего хотел-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.11.2020, 21:46
|
|||
|---|---|---|---|
|
|||
Проблема округления даты (Double) |
|||
|
#18+
defecator формула отработает правильно, если D1 > D2 defecator Если D1 < D2, то будет отрицательное значение +1 лишний час ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.11.2020, 21:54
|
|||
|---|---|---|---|
Проблема округления даты (Double) |
|||
|
#18+
_Vasilisk_ defecator формула отработает правильно, если D1 > D2 defecator Если D1 < D2, то будет отрицательное значение +1 лишний час не поможет 25.11.20 00:00 - 24.11.20 23:00 по формуле получится 23 24.11.20 00:00 - 25.11.20 23:00 по формуле получится -24 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.11.2020, 21:56
|
|||
|---|---|---|---|
Проблема округления даты (Double) |
|||
|
#18+
rgreat >Работа функции Round не соответствует твоим ожиданиям? Моим соответствует. >Что ты написал - то и получил. Что ты предложил, то я и написал, демонстрируя, что твоё предложение не работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.11.2020, 22:03
|
|||
|---|---|---|---|
Проблема округления даты (Double) |
|||
|
#18+
DimaBr Моим соответствует. Зачем ты тогда такую дичь с подобными округлениями написал? Что бы запутать топик стартера? Что ты предложил, то я и написал, демонстрируя, что твоё предложение не работает Т.е. ты не согласен с моим утверждением что "(D1-D2) * 24 = кол-во часов."? А уж как правильно double в integer перевести - это как бы должно быть известно каждому. Да и не ясно, надо ли вообще в int переводить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.11.2020, 22:28
|
|||
|---|---|---|---|
Проблема округления даты (Double) |
|||
|
#18+
rgreat >Зачем ты тогда такую дичь с подобными округлениями написал? Предложи свой вариант округления, согласно своей же формуле >Что бы запутать топик стартера? Топикстартер уже нашёл верное решение, считать НЕ РАЗНИЦУ В ДАТАХ, а разницу в МИЛЛИСЕКУНДАХ >Т.е. ты не согласен с моим утверждением что "(D1-D2) * 24 = кол-во часов."? Как видишь, твоя идея с разницей в датах натыкается на погрешность ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=58&tablet=1&tid=2037848]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
153ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 231ms |
| total: | 485ms |

| 0 / 0 |
