- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将一些 TimeSpans 加在一起进行一些计算。
例如:
var timeSpan1 = new TimeSpan.FromMinutes(1);
var timeSpan2 = new TimeSpan.MaxValue;
var timeSpan3 = timeSpan1 + timeSpan2;
在这种情况下,它将超过 TimeSpan.MaxValue 并抛出异常
System.OverflowException : TimeSpan overflowed because the duration is too long.
添加 TimeSpans 的正确方法是什么?
我是否必须围绕它放置一个 try-catch 或编写我自己的扩展方法?看起来这应该是 .Net 框架的一部分——要么默认为 MaxValue,要么有一个 TryAdd 方法。
最佳答案
我会使用代数,并将所有内容保存在 TimeSpan
单位中:
public static TimeSpan AddTimeSpan(this TimeSpan ts1, TimeSpan ts2)
{
bool sign1 = ts1 < TimeSpan.Zero, sign2 = ts2 < TimeSpan.Zero;
if (sign1 && sign2)
{
if (TimeSpan.MinValue - ts1 > ts2)
{
return TimeSpan.MinValue;
}
}
else if (!sign1 && !sign2)
{
if (TimeSpan.MaxValue - ts1 < ts2)
{
return TimeSpan.MaxValue;
}
}
return ts1 + ts2;
}
这样一来,您可以利用 TimeSpan
而无需将其转换为其他单位,并且您可以放心,不管转换过程中可能出现的其他潜在陷阱(我认为这是可以安全地假设 TimeSpan
范围不会改变,以至于 TotalMinutes
不再足够,但是当您接近 TimeSpan.MinValue
或 TimeSpan.MaxValue
的限制。
关于c# - 检查添加的 TimeSpans 是否超过 TimeSpan.MaxValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45204512/
我在面试中被问到这个问题,面试官告诉我有有效的方法来获得输出。需要添加两个 double 值: double d = double.MaxValue; double d1 = double.MaxVa
我知道,Int32.MaxValue * Int32.MaxValue 会产生一个大于 Int32 的数字;但是,这个声明不应该引发某种异常吗? 我在执行诸如 IF (X * Y > Z) 之类的操作
它们都包含 8 个字节,但是为什么 double 的最大值比 long 的最大值大得多?可用的位数是有限的,那么如何使用浮点变量达到更大的数字呢? 最佳答案 它使用指数和尾数使用不同的表示(浮点) 详
[DBG]: PS C:\Windows\system32>>> echo [uint32]::maxvalue [uint32]::maxvalue 和 [DBG]: PS C:\Windows\s
我想知道您是否可以解释浮点类型的溢出。 float.MaxValue == float.MaxValue + 1 // returns true 最佳答案 因为 1 太小而无法影响 float.Max
我知道这个问题有一个简单的答案,但它让我感到困惑。 为什么 Long.MaxValue 可以存储在 Double 中并作为 longValue 返回,但较小的 Long 会丢失精度。 我预计 53 位
为什么分配大小为int.MaxValue 的字节数组失败 byte[] array1 = new byte[int.MaxValue]; // throws an OutOfMemoryExc
我试图了解某些数据类型和转换之间的区别。 public static void ExplicitTypeConversion2() { long longValue=long.
TL;DR: F# 编译器在此上下文中将 int 解释为 int operator ,如determined by Eugene Fotin和 expanded upon by Gene Belits
示例(奇怪行为旁边的星号): [Fact] public void BigInteger_ToString_behavior_is_odd() { writeH
示例(奇怪行为旁边的星号): [Fact] public void BigInteger_ToString_behavior_is_odd() { writeH
现在 minvalue 在哪里,我实际上希望 maxvalue 为 12。最大值而不是最小值的代码是什么?谢谢! 这使用了 jQuery 和 jquery.validate: $(document).
我不确定这是不是一个问题,但邮件中的内容看起来不正确。 我的第一次尝试: try { var r = new Random(); Console.WriteLine(r.Next(-1
我想编写应该与 byte 和 ushort 类型一起工作的通用类。我应该为这个类使用什么约束?如何检测此类中的 MaxValue 属性? class MyClass // where T: ???
作为一个小测试,我想看看在 C# 控制台应用程序中计算到 int.MaxValue 需要多长时间。每隔几个小时我就会检查进度。昨晚当我认为程序将完成执行时,它正在执行回到 0。我不确定为什么会这样,我
我正在尝试计算图像中最常见的颜色。使用 calcHist 函数,我知道我可以获得一个直方图,其单个 channel 中的 bin 是像素值,每个 bin 的值是该值出现的次数在图像中。 此外,使用 m
我在 c# 类库项目 (.net 4) 上使用 Visual Studio 2010 SP1 Ultimate,我对某些事情感到好奇... 给定这个方法: public void DoSomethin
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我有一个名为 BoughtDate 的可为 null 的 Date 属性。我正在尝试以下操作: if( item.BoughtDate.Value.Equals( DateTime.MaxValue)
为什么 Double.MaxValue转换为整数类型会产生负值,即该类型的最小值? double maxDouble = double.MaxValue; // 1.79769313486
我是一名优秀的程序员,十分优秀!