我一直在使用高精度的時間來記錄我的程序在控制檯中的事件。但很快我注意到該程序有時顯示時間四捨五入到毫秒,有時不顯示!它發生零星完全,這是相同的代碼,不會重新編譯,不能編輯運行之間:Mystery:DateTime的精度是四捨五入的,當它想要
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace DateTimePrecisionTest
{
class Program
{
static DateTime ProgramStartTimeGlobal;
static void PrintConsoleLogGlobal()
{
string TimeStampText = ((DateTime.Now - ProgramStartTimeGlobal).TotalMilliseconds/1000).ToString("0.000000");
Console.WriteLine(String.Format("Global var: [ {0,10} ] ", TimeStampText));
}
static void PrintConsoleLogLocal(DateTime StartTime)
{
string TimeStampText = ((DateTime.Now - StartTime).TotalMilliseconds/1000).ToString("0.000000");
Console.WriteLine(String.Format("Local var: [ {0,10} ] ", TimeStampText));
}
static void Main(string[] args)
{
ProgramStartTimeGlobal = DateTime.Now;
for (int i = 0; i < 20; i++)
{
PrintConsoleLogGlobal();
PrintConsoleLogLocal(ProgramStartTimeGlobal);
Thread.Sleep(512);
}
Console.ReadLine();
}
}
}
首先我想這取決於我是否打印全局或局部變量。但似乎並非如此。 輸出是(值括號是秒):發生在採用這種記錄其他節目
這混亂精度的變化。這一方案,例如,在遠程服務器(它們之間具有不可預測的延遲)執行任務:
爲什麼?
如果不除以1000,該怎麼辦?你也可以使用'Seconds'和'Milliseconds'部分。 –
好的,刪除了'/ 1000'。它現在輸出如下:'[16348.435900]'(所以這是幾毫秒後的4位數字)。現在正在等待星星對齊以重現舍入。 – Taosique