Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 时间跨度错误。。?_C#_.net_Visual Studio 2010_.net 3.5_Timespan - Fatal编程技术网

C# 时间跨度错误。。?

C# 时间跨度错误。。?,c#,.net,visual-studio-2010,.net-3.5,timespan,C#,.net,Visual Studio 2010,.net 3.5,Timespan,相同TIKC量的TimeSpan如何给出不同的TotalDays值?下面是我运行应用程序后在Debugger上看到的内容 Ticks: 25920000000000 TotalDays: 30.0 当我在同一位置点击断点时,再点击几下,值如下所示: Ticks: 25920000000000 TotalDays: 29.999999999999996 因为我后来使用了总天数值,所以我突然想到,对于“相同”的时间跨度,一次是30,另一次是29 这仅在.NET 3.5框架配置的“AnyCpu

相同TIKC量的TimeSpan如何给出不同的TotalDays值?下面是我运行应用程序后在Debugger上看到的内容

Ticks: 25920000000000
TotalDays: 30.0

当我在同一位置点击断点时,再点击几下,值如下所示:

Ticks: 25920000000000
TotalDays: 29.999999999999996

因为我后来使用了总天数值,所以我突然想到,对于“相同”的时间跨度,一次是30,另一次是29

这仅在.NET 3.5框架配置的“AnyCpu”上的我的Corei7(win7 x64)工作站上出现(在x86上总是30,在其他3个工作站上也不会出现29)。有什么想法吗

好吧,它是一个双精度值(因此当您获得
TotalDays
值时,会将
long
-
Ticks
-转换为
double
),因此可能会出现浮点精度“问题”

如果需要整数,请使用
TimeSpan.Days

TotalDays
是一个只读属性,它使

return (double) this._ticks * (0.0 / 1.0);
(其中,
\u ticks
为长)

Days
也是一个只读项目:

return (int) (this._ticks / 864000000000L);

TimeSpan.Days
但是,正如您所说,只会给出整数天数。。。在OP的版本中,第一个将返回30,但第二个将返回29。@ChrisHammond Days不仅仅是“将TotalDays转换为int”,您应该删除
返回(双倍)这个值。_ticks*(0.0/1.0)来自您的答案。这显然每次都会返回零。正确的代码是
返回(双倍)this.\u ticks*DaysPerTick
其中
DaysPerTick
声明为
private const double DaysPerTick=1.1574074e-12。在编写问题标题时,请尽量更加具体。是否使用Direct3D?可以在运行时修改浮点精度。看这个。