TimeSpan.TotalMilliseconds的奇怪实现
本文关键字:实现 TotalMilliseconds TimeSpan | 更新日期: 2023-09-27 18:28:03
public double TotalMilliseconds
{
[__DynamicallyInvokable]
get
{
double num = (double)this._ticks * 0.0001;
if (num > 922337203685477.0)
{
return 922337203685477.0;
}
if (num < -922337203685477.0)
{
return -922337203685477.0;
}
return num;
}
}
-922337203685477.5808<=刻度 * 0.0001<=922337203685477.5807
为什么它会削减小数部分?
平克曼说:"双精度为15-16位"。但是为什么总秒数不削减小数部分?
public double TotalSeconds
{
[__DynamicallyInvokable, TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
get
{
return (double)this._ticks * 1E-07;
}
}
您应该检查类型精度:MSDN 双重定义。
如您所见,double
具有 15-16 位精度,并且您将其中大部分用于整数部分。
我看过Mono。
public double TotalMilliseconds
{
get
{
return (double) _ticks / TicksPerMillisecond;
}
}
它似乎只是一个特定于实现的。