Eric Lippert がDateTimeに関する記事を書きました。ジョンスキートは彼の記事にコメントしました
誰もが知っている限り、DateTime の精度が高すぎることに問題はありません。精度ではなく精度
彼はそれによってどういう意味ですか?
DateTime の精度の問題と精度の問題にアプローチすることの意味は何ですか?
Eric Lippert がDateTimeに関する記事を書きました。ジョンスキートは彼の記事にコメントしました
誰もが知っている限り、DateTime の精度が高すぎることに問題はありません。精度ではなく精度
彼はそれによってどういう意味ですか?
DateTime の精度の問題と精度の問題にアプローチすることの意味は何ですか?
彼はその記事で間違った精度という用語を使用しています。精度が低いということは、コンピューターの時計が 1 分ずれていたらどうなるかなど、システムに偏りがあることを意味します。Lippert の記事が実際に示しているのは、誤った精度です。
つまり、DateTime
わずか100ナノ秒の差を表すことができるという点で、構造は非常に正確です。ただし、取得する値は DateTime.Now
16 ミリ秒以内の精度しかありません。ただし、与えられた数値はDateTime
、表現できる完全な精度を保持します。値を取得するソースによって提供される精度を見つけるのに時間をかけるのではなくDateTime.Now
、構造体の完全な精度を持つ値を返すと仮定するのは簡単なので、これは問題を引き起こします。DateTime
DateTime.Now
DateTime
、単純なデータ構造であるため、固有の精度がないため、それについて話すことはあまり意味がありません. (1 キログラムの精度は?) システム クロックの精度について話す方が適切です。(たとえば、その縮尺はどのくらい正確ですか?) しかし、それはコンピューターごとに異なる可能性があり、実際には .NET のデータ構造とは何の関係もありません。
それだけの精度を持つことで発生する問題は、もちろん、特定の値が正確であると同じくらい正確であると仮定するのが非常に簡単であることです。しかし、それはまったく保証されていません!身長は倍精度浮動小数点数で 1.799992352094 メートルとして表すことができます。1 兆分の 1 メートルの精度ですが、1 兆分の 1 メートル、さらには 1000 分の 1 メートルまで自分の身長を実際に測定できるデバイスを持っていないため、100 分の 1 メートルまでしか正確ではありません。ここでは、精度よりも精度の方がはるかに優れています。