Why does TimeSpan.FromSeconds(double) round to milliseconds?

前端 未结 5 1930
悲哀的现实
悲哀的现实 2020-12-15 03:22

TimeSpan.FromSeconds takes a double, and can represent values down to 100 nanoseconds, however this method inexplicably rounds the time to whole milliseconds.

5条回答
  •  挽巷
    挽巷 (楼主)
    2020-12-15 03:47

    On the rights of a speculation..

    1. TimeSpan.MaxValue.TotalMilliseconds is equat to 922337203685477. The number that has 15 digits.
    2. double is precise to 15 digits.
    3. TimeSpan.FromSeconds, TimeSpan.FromMinutes etc. all go through conversion to milliseconds expressed in double (then to ticks then to TimeSpan which is not interesting now)

    So, when you are creating TimeSpan that will be close to TimeSpan.MaxValue (or MinValue) the conversion will be precise to milliseconds only.
    So the probable answer to the question "why" is: to have the same precision all the times.
    Further thing to think about is whether the job could have been done better if conversions were done through firstly converting value to ticks expressed in long.

提交回复
热议问题