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

start [/forum/topic.php?all=1&fid=58&tid=2037848]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
35ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
82ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 393ms |

| 0 / 0 |
