DateTime精度与准确度?

Eric Lippert写了一篇关于DateTime的文章 。 Jon Skeet评论了他的文章

只要每个人都知道,我对DateTime的精度太高没有任何问题。 精确,而不是准确

那是什么意思?

接近DateTime精度问题与准确性问题有什么意义?

他在那篇文章中使用的术语“准确度”错误。 准确性差实际上意味着系统偏差,例如如果计算机的时钟关闭一分钟会发生什么。 Lippert的文章真正说明的是错误的精确度 。

换句话说, DateTime结构非常精确,因为它能够表示仅100纳秒的差异。 但是,您从DateTime.Now获得的值仅精确到16毫秒内。 但是你给出的数字仍然具有DateTime能够表示的全部精度。 这会产生一个问题,因为很容易假设DateTime.Now返回的值带有DateTime结构的完全精度,而不是花时间找出DateTime.Now获取其值的源所提供的精度。

DateTime是一个简单的数据结构,没有固有的准确性,所以谈论它并没有多大意义。 (一公斤的准确度是多少?)最好谈谈系统时钟的准确性。 (例如,这个规模有多精确?)但是这可能因每台计算机而异,并且与.NET中的数据结构没有任何关系。

具有那么高精度的问题当然是很容易假设给定值精确到准确。 但这根本不值得保证! 我可以用双精度浮点数表示我的身高为1.799992352094米; 虽然精确到一万亿分之一米,它只能精确到百分之一米,因为我没有一个可以实际测量我的身高达万亿分之一米,甚至千分之一米的装置。 这里有更精确而不是准确的方法。

资源