Hai dòng tiếp theo thêm cùng một số tiền vào cùng một ngày và phần ngày kết quả giống nhau, nhưng bằng cách nào đó có sự khác biệt trong phần thời gian!Số phát hành .NET AddDays
(new DateTime(2000,1,3,18,0,0)).AddDays(4535);
(new DateTime(2000,1,3,18,0,0)).AddMonths(149);
bạn sẽ nhận được một sự khác biệt của 15 giây, và với cả hai đều ít nhất roundable đến ngày này, tôi không biết lý do tại sao việc này xảy ra, nhưng nó chỉ xảy ra với AddDays, nhưng không AddMonths (ngay cả với hàng ngàn tháng thêm)
Sửa 1
Vì vậy, tôi đã cố gắng để thực hiện một dự án mẫu, nhưng không có may mắn. Nếu tôi chạy dự án chính của tôi, và đặt các dòng mẫu vào đồng hồ, hơn tôi nhận được 2 giá trị riêng biệt, nếu tôi thực hiện một khởi đầu mới, vấn đề là không có. Dự án là 3,5, C#, vs2010, win7hp x64 (proj: x86). Tôi đang cố gắng để tái tạo nó cũng trong một dự án nhỏ tươi, tôi sẽ viết lại nếu tôi có nó.
Đây là kết quả của tôi trong dự án chính (copeid từ đồng hồ!):
(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
Chỉnh sửa 2
tôi đã quản lý để thu hẹp nó xuống hơn nữa. Chúng tôi có một thành phần tự làm, bảng điều khiển cơ sở, chúng tôi vẽ trên nó với directx. Nếu tôi làm cho rằng có thể nhìn thấy = false, hơn hiển thị = true, so với lỗi đến, trước khi hiển thị = true (hoặc show()), phép tính là chính xác. Cái gì trên thế giới có thể ở đó, rằng kết quả nhận được cái gì đó khác của một công thức mà không có biến nào được sử dụng. Văn hóa không bị ảnh hưởng trong các thành phần ..
Có thể là một vấn đề do datatype, vì AddDays mất gấp đôi. Có vẻ như sự khác biệt nên được ít hơn rất nhiều 15 giây, mặc dù. Xem http://en.wikipedia.org/wiki/Double_precision để xem nó chỉ xấp xỉ giá trị như thế nào. –
Bạn đã thử đảo ngược thứ tự của các cuộc gọi phương thức để xem bạn có nhận được kết quả tương tự không? Nó có lẽ sẽ không tạo ra sự khác biệt nhưng tôi tò mò. –
Tôi đã không thể tái tạo điều này (trên trình biên dịch C# 4). Môi trường của bạn là gì? – SWeko