Следующие две строки добавляют ту же сумму к одной и той же дате, а часть даты результатов одна и та же, но как-то разница в части времени!
(new DateTime(2000,1,3,18,0,0)).AddDays(4535);
(new DateTime(2000,1,3,18,0,0)).AddMonths(149);
вы получите разницу в 15 секунд, и с обоими как минимум округлыми до нескольких дней, я не знаю, почему это произошло, но это происходит только с AddDays, но не с AddMonths (даже с добавлением тысяч месяцев)
Изменить 1
Итак, я попытался создать образец проекта, но не повезло. Если я запустил свой основной проект и поместил образцы строк в часы, я получу 2 отдельных значения, если я начну новый старт, проблемы там нет. Проект - 3.5, С#, vs2010, win7hp x64 (proj: x86). Я пытаюсь воспроизвести его также в новом маленьком проекте, я буду писать, если у меня есть.
Это мои результаты в основном проекте (copeid from watches!):
(new DateTime(2000, 1, 3, 18, 0, 0)).AddDays(4535).Ticks
634743432153600000 long
(new DateTime(2000, 1, 3, 18, 0, 0)).AddMonths(149).Ticks
634743432000000000 long
Изменить 2
Мне удалось еще больше сузить его. У нас есть самодельный компонент, панель, мы рисуем на нем с помощью directx. Если я сделаю видимым = false, чем visible = true, чем ошибка, то перед видимым = true (или show()) вычисление будет правильным. Что в мире может быть там, что результат получает что-то другое формулы, где не используется переменная. Культура не затрагивается в компоненте.