【发布时间】:2011-06-08 00:37:19
【问题描述】:
TimeSpan.FromSeconds 采用双精度,并且可以表示低至 100 纳秒的值,但是这种方法莫名其妙地将时间四舍五入到整毫秒。
鉴于我刚刚花了半个小时来查明这种(记录在案的!)行为,知道为什么会出现这种情况会让我更容易忍受浪费的时间。
谁能说明为什么会实施这种看似适得其反的行为?
TimeSpan.FromSeconds(0.12345678).TotalSeconds
// 0.123
TimeSpan.FromTicks((long)(TimeSpan.TicksPerSecond * 0.12345678)).TotalSeconds
// 0.1234567
【问题讨论】:
-
很遗憾看到旧答案消失了。我怀疑我能想出更好的东西(我想 +1...)
-
"[K]知道为什么会出现这种情况会让你更容易忍受浪费的时间。"将其视为沉没成本。
-
也被那个咬了。我的理论是它是 .net 1 中的一个错误,并且没有被更改,因为它会破坏现有程序。 IMO MS 至少应该更新智能感知描述以表明这些函数只有毫秒精度。
标签: .net timespan base-class-library