草庐IT

c# - 为什么 NaN(不是数字)仅适用于 double ?

我有一个包含两个可为null的小数属性的业务类。第三个属性返回其他两个属性相乘的结果。如果HasValue对于两个可为null的类型都为真,则我乘以并返回结果。如果一个或两个属性为null,我有几个返回值选项:返回0抛出异常返回一个魔数(MagicNumber)(-1)返回小数?(编辑——见评论)我认为我的选择之一是返回NaN,但我发现这只适用于double类型。这是为什么?郑重声明,在这种情况下返回0最有意义,这就是我打算做的,除非有人有更好的建议。 最佳答案 .NET中的整数类型使用二进制补码系统进行表示。虽然他们可以为特殊值保

c# - 为什么 NaN(不是数字)仅适用于 double ?

我有一个包含两个可为null的小数属性的业务类。第三个属性返回其他两个属性相乘的结果。如果HasValue对于两个可为null的类型都为真,则我乘以并返回结果。如果一个或两个属性为null,我有几个返回值选项:返回0抛出异常返回一个魔数(MagicNumber)(-1)返回小数?(编辑——见评论)我认为我的选择之一是返回NaN,但我发现这只适用于double类型。这是为什么?郑重声明,在这种情况下返回0最有意义,这就是我打算做的,除非有人有更好的建议。 最佳答案 .NET中的整数类型使用二进制补码系统进行表示。虽然他们可以为特殊值保

c# - 使用条件/三元 ("?:") 运算符进行转换

我有这段C#源代码的摘录:objectvalueFromDatabase;decimalresult;valueFromDatabase=DBNull.Value;result=(decimal)(valueFromDatabase!=DBNull.Value?valueFromDatabase:0);result=(valueFromDatabase!=DBNull.Value?(decimal)valueFromDatabase:(decimal)0);第一个结果评估抛出一个InvalidCastException而第二个则没有。这两者有什么区别? 最佳

c# - 使用条件/三元 ("?:") 运算符进行转换

我有这段C#源代码的摘录:objectvalueFromDatabase;decimalresult;valueFromDatabase=DBNull.Value;result=(decimal)(valueFromDatabase!=DBNull.Value?valueFromDatabase:0);result=(valueFromDatabase!=DBNull.Value?(decimal)valueFromDatabase:(decimal)0);第一个结果评估抛出一个InvalidCastException而第二个则没有。这两者有什么区别? 最佳

C# 为什么相等的小数可以产生不相等的散列值?

我们遇到了一个神奇的十进制数,它破坏了我们的哈希表。我将其归结为以下最小情况:decimald0=295.50000000000000000000000000m;decimald1=295.5m;Console.WriteLine("{0}=={1}:{2}",d0,d1,(d0==d1));Console.WriteLine("0x{0:X8}==0x{1:X8}:{2}",d0.GetHashCode(),d1.GetHashCode(),(d0.GetHashCode()==d1.GetHashCode()));给出以下输出:295.50000000000000000000000

C# 为什么相等的小数可以产生不相等的散列值?

我们遇到了一个神奇的十进制数,它破坏了我们的哈希表。我将其归结为以下最小情况:decimald0=295.50000000000000000000000000m;decimald1=295.5m;Console.WriteLine("{0}=={1}:{2}",d0,d1,(d0==d1));Console.WriteLine("0x{0:X8}==0x{1:X8}:{2}",d0.GetHashCode(),d1.GetHashCode(),(d0.GetHashCode()==d1.GetHashCode()));给出以下输出:295.50000000000000000000000

c# - 将变量四舍五入到小数点后两位 C#

这个问题在这里已经有了答案:HowdoyouroundanumbertotwodecimalplacesinC#?(15个答案)关闭3年前。我对如何将变量四舍五入到小数点后两位感兴趣。在下面的示例中,奖金通常是一个带小数点后四位的数字。有什么方法可以确保薪酬变量始终四舍五入到小数点后两位?pay=200+bonus;Console.WriteLine(pay);

c# - 将变量四舍五入到小数点后两位 C#

这个问题在这里已经有了答案:HowdoyouroundanumbertotwodecimalplacesinC#?(15个答案)关闭3年前。我对如何将变量四舍五入到小数点后两位感兴趣。在下面的示例中,奖金通常是一个带小数点后四位的数字。有什么方法可以确保薪酬变量始终四舍五入到小数点后两位?pay=200+bonus;Console.WriteLine(pay);

c# - 如何格式化 C# 小数以删除多余的 0?

我想将一个字符串格式化为小数,但小数后面包含一些零。我如何格式化它以使那些无意义的0消失?string.Format("{0}",1100M);string.Format("{0}",1100.1M);string.Format("{0}",1100.100M);string.Format("{0}",1100.1000M);显示:11001100.11100.1001100.1000但我希望它是:11001100.11100.11100.1作为引用,这里有其他问题,这些问题基本上与此重复,感谢此处给出的答案,我发现了这些问题:Parsedecimalandfilterextra0on

c# - 如何格式化 C# 小数以删除多余的 0?

我想将一个字符串格式化为小数,但小数后面包含一些零。我如何格式化它以使那些无意义的0消失?string.Format("{0}",1100M);string.Format("{0}",1100.1M);string.Format("{0}",1100.100M);string.Format("{0}",1100.1000M);显示:11001100.11100.1001100.1000但我希望它是:11001100.11100.11100.1作为引用,这里有其他问题,这些问题基本上与此重复,感谢此处给出的答案,我发现了这些问题:Parsedecimalandfilterextra0on