DateTime精度与准确度?

时间:2012-12-17 06:07:15

标签: c# datetime

Eric Lippert写了一篇关于DateTime的article。 Jon Skeet用

评论了他的文章
  

只要每个人都知道,我就没有问题,DateTime有太多精度。精确,而不是准确

他的意思是什么?

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

2 个答案:

答案 0 :(得分:11)

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

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

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

答案 1 :(得分:3)

  

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

Source