草庐IT

double-submit-prevention

全部标签

c# - 将 double 转换为 int,它是四舍五入还是只是去掉数字?

用double进行一些计算,然后需要将其转换为int。所以我有一个快速的问题,当将doublesay7.5转换为int时,它将返回7。这是四舍五入的产物还是只是去掉小数点后的任何内容?如果它是四舍五入的产物,它是否聪明,即0.1到0.5向下舍入,0.6到0.9向上舍入?干杯 最佳答案 不四舍五入,只返回小数点前的整数部分。引用(感谢Rawling)ExplicitNumericConversionsTable:Whenyouconvertadoubleorfloatvaluetoanintegraltype,thisvalueisr

c# - 数学解释为什么 Decimal 到 Double 的转换被破坏并且 Decimal.GetHashCode 分隔相等的实例

我不确定这种陈述StackOverflow问题的非标准方式是好是坏,但这里是:什么是最好的(数学或其他技术)解释代码的原因:staticvoidMain(){decimal[]arr={42m,42.0m,42.00m,42.000m,42.0000m,42.00000m,42.000000m,42.0000000m,42.00000000m,42.000000000m,42.0000000000m,42.00000000000m,42.000000000000m,42.0000000000000m,42.00000000000000m,42.000000000000000m,42.0

c# - 将 double 转换为 float 是否总是返回相同的值?

将double转换为float总是会产生相同的结果,还是会有一些“舍入差异”?比如x在floatx=(float)0.123456789d;总是相同的值?将float转换为double,然后将其转换回float会怎么样。(float)(双)someFloat?最感兴趣的是C#中的结果,但如果您知道它在其他语言上的工作原理,请随时分享。 最佳答案 结果不应依赖于语言,除非语言偏离IEEE规范。所有float都可以精确地表示为double,因此从float到double再到float的往返应该产生与您开始时相同的值。类似地,将任何dou

c# - Double.MaxValue 为整数是否为负数?

为什么Double.MaxValue转换为整数类型会产生负值,即该类型的最小值?doublemaxDouble=double.MaxValue;//1.7976931348623157E+308longmaxDoubleLong=(long)maxDouble;//-9223372036854775808如果它太大或在运行时出现OverflowException,或者如果我使用unchecked转换可能不会引发异常,我会理解编译器错误,但是结果变得不确定和不正确(负)。同样奇怪的是,这个值是long.MinValue:boolsameAsLongMin=maxDoubleLong==l

c# - 将 float 转换为 double 会丢失精度但不会通过 ToString

我有以下代码:floatf=0.3f;doubled1=System.Convert.ToDouble(f);doubled2=System.Convert.ToDouble(f.ToString());结果相当于:d1=0.30000001192092896;d2=0.3;我很好奇这是为什么? 最佳答案 这不是精度损失.3不是representableinfloatingpoint.当系统转换为它四舍五入的字符串时;如果你打印出足够多的有效数字,你会得到更有意义的东西。看得更清楚floatf=0.3f;doubled1=Syste

c# - 为什么 (int)double.NaN 和 (int)double.PositiveInfinity 为 0?

在C#中,如果您0/0,您会得到一个异常。但是如果你0.0/0或0.0/0.0你得到double.NaN和double.Infinity,分别。但是如果将这些结果转换为int,您将得到0。>(int)double.PositiveInfinity0>(int)double.NaN0为什么会这样?难道运行时不应该给出转换错误,因为无穷大显然不是零吗? 最佳答案 这取决于您所处的上下文类型。如果您使用checked上下文,您将得到一个异常。规范的相关部分是第6.2.1节:Foraconversionfromfloatordoubleto

c# - 获取下一个最小的 Double 数

作为单元测试的一部分,我需要测试一些边界条件。一种方法接受System.Double参数。有没有办法获得次小double值?(即将尾数减1个单位值)?我考虑过使用Double.Epsilon但这是不可靠的,因为它只是从零开始的最小增量,因此不适用于较大的值(即9999999999-Double.Epsilon==9999999999).那么需要什么样的算法或代码才能:NextSmallest(Doubled)...总是正确的。 最佳答案 如果您的数字是有限的,您可以在BitConverter类中使用几个方便的方法:longbits=

c# - NaN 对 double 意味着什么?

NaN和Infinity有什么区别?NaN什么时候出现?这是什么? 最佳答案 来自Wikipedia:Incomputing,NaN(NotaNumber)isavalueofthenumericdatatyperepresentinganundefinedorunrepresentablevalue,especiallyinfloating-pointcalculations.SystematicuseofNaNswasintroducedbytheIEEE754floating-pointstandardin1985,along

c# - 为什么 IsAssignableFrom() 不适用于 int 和 double?

这是错误的:typeof(double).IsAssignableFrom(typeof(int))这是错误的:typeof(int).IsAssignableFrom(typeof(double))但这行得通:doublea=1.0;intb=1;a=b;很明显double是可以从int赋值,但是框架IsAssignableFrom()弄错了。为什么?或者这是.NET中的一个错误,是由int和double的特殊性质引起的,它们没有继承关系但可以分配(单向)? 最佳答案 C#提供从int到double的隐式转换。这是语言的决定,不是

c# - 为什么 double.Parse 忽略零的符号?

例如,在:booleq=(1/double.Parse("-0.0"))==(1/-0.0);eq将为false。double.Parse必须经历一些麻烦才能显式忽略零符号,即使不这样做几乎不会导致问题。由于我需要原始表示,因此我必须编写自己的解析函数,该函数处理负零的特殊情况,并使用double.Parse处理其他所有内容。这不是什么大问题,但我真的很想知道他们为什么决定忽略零符号,因为在我看来不这样做并不是坏事。 最佳答案 我不知道为什么本身,但一个潜在的解决方案:如果你在开头看到一个-字符,解析字符串的其余部分并然后否定它。