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

start [/forum/topic.php?fid=58&fpage=32&tid=2037848]: |
0ms |
get settings: |
56ms |
get forum list: |
26ms |
check forum access: |
24ms |
check topic access: |
24ms |
track hit: |
95ms |
get topic data: |
56ms |
get forum data: |
32ms |
get page messages: |
125ms |
get tp. blocked users: |
4ms |
| others: | 363ms |
| total: | 805ms |

| 0 / 0 |
