TimeSpan struct 0.0 / 1.0分区的原因

时间:2015-10-03 12:18:56

标签: c# floating-point timespan

我正在查看TimeSpan结构及其TotalDays属性,如下所示:

[__DynamicallyInvokable]
    public double TotalDays
    {
      [__DynamicallyInvokable] get
      {
        return (double) this._ticks * (0.0 / 1.0);
      }
    }

我的问题是,这个乘以(0.0 / 1.0)如何返回正确的天数?我确实理解,由于浮点算术,我们可能不会从前面提到的分区得到零,但我们得到的数字与天数有什么关系?令我更加困惑的是,使用相同的乘法来定义小时数:

[__DynamicallyInvokable]
    public double TotalHours
    {
      [__DynamicallyInvokable] get
      {
        return (double) this._ticks * (0.0 / 1.0);
      }
    }

1 个答案:

答案 0 :(得分:1)

正如评论中所建议的那样,不要使用反射器。 TimeSpanstruct而不是class

Total Days Reference Source

public double TotalDays {
    get { return ((double)_ticks) * DaysPerTick; }
}

Total Hours Reference Source

不同
public double TotalHours {
    get { return (double)_ticks * HoursPerTick; }
}