草庐IT

c# - 为什么是 -1L * -9223372036854775808L == -9223372036854775808L

我知道这与处理器处理溢出的方式有关,但我看不到。与不同的负数相乘得到零或-2^63:在C#交互中:>returnunchecked(-1L*-9223372036854775808L);-9223372036854775808>returnunchecked(-2L*-9223372036854775808L);0>returnunchecked(-3L*-9223372036854775808L);-9223372036854775808>returnunchecked(-4L*-9223372036854775808L);0>returnunchecked(-5L*-9223372

c# - (int)myDouble 是否与 (int)Math.Truncate(myDouble) 不同?

(int)myDouble是否与(int)Math.Truncate(myDouble)不同?有什么理由让我更喜欢其中之一吗? 最佳答案 Math.Truncate适用于需要将结果保持为double且没有小数部分的情况。如果你想把它转换成一个int,直接使用cast就可以了。编辑:供引用,这里是“ExplicitNumericConversionsTable”的相关文档。”:Whenyouconvertfromadoubleorfloatvaluetoanintegraltype,thevalueistruncated.

c# - 人气算法

在SO18上,Joel提到了一种算法,该算法会根据项目的年龄和受欢迎程度对项目进行排名,并且该算法基于引力。有人可以发布这个吗?C#会很不错,但实际上任何语言(好吧,我不会LISP)都可以。 最佳答案 我的理解是从另外一个JeffAtwood上大致是这样的发布t=(timeofentrypost)-(Dec8,2005)x=upvotes-downvotesy={1ifx>0,0ifx=0,-1ifx 关于c#-人气算法,我们在StackOverflow上找到一个类似的问题:

c# - C# 中的复杂计算

.NET(C#)中用于计算的最佳(最有效)工具是什么:积分偏导数其他重要的数学人们可以评论一下Mathematica和Matlab以及它们与C#的集成吗? 最佳答案 Math.NET是一个用C#为Microsoft.NET平台编写的数学开源工具包,旨在为数值科学和符号代数计算提供一个独立的干净框架。特别是,Math.NETNumerics是dnAnalytics合并的结果与Math.NETIridium并包括以下功能:实数和复数、稠密和稀疏线性代数(使用LU、QR、eigenvalues、...分解)数值函数积分(正交)例程积分变换

c# - 评估数学表达式的最佳算法?

评估数学表达式的最佳算法是什么?我希望能够稍微优化一下,因为我可能有一个包含各种变量的公式,我可能需要使用不同的变量对其进行数百次评估。所以基本上,如果我最初可以解析公式,以便以某种方式对其进行优化,然后我可以根据需要多次将变量传递给这个优化版本,每次它都会为我生成一个结果。我将使用Delphi或C#编写此代码。我已经使用调车场算法编写了类似的东西,但每次我需要计算相同的公式时,我都必须经过解析阶段。必须有更好的方法来做到这一点。 最佳答案 如果你想用Delphi来做,你可以看看JclExprEval单元是如何工作的,它是JEDIC

c# - 在 Delphi 中,Math.Round() 与 MidpointRounding.AwayFromZero 的等效项是什么?

我如何在Delphi中使用类似Math.Round和MidpointRounding.AwayFromZero的c#?等同于:doubled=2.125;Console.WriteLine(Math.Round(d,2,MidpointRounding.AwayFromZero));输出:2.13在德尔福? 最佳答案 我相信DelphiRTL的SimpleRoundTo函数本质上是这样做的,至少如果FPU舍入模式是“正确的”。请仔细阅读其文档和实现,然后确定它是否足以满足您的目的。但请注意,设置像这样的单个舍入操作的舍入模式是使用全

c# - UInt64 和 "The operation overflows at compile time in checked mode"- CS0220

这感觉像是一个愚蠢的问题,但我似乎看不到答案。我有一个UInt64,它的最大值应该是UInt64.MaxValue18446744073709551615但是,当我尝试分配一个中等大小的数字时,出现“在检查模式下编译时操作溢出”的溢出错误。如果我将它包装在一个“未经检查”的block中,那么它会编译并运行,就像这个变量为零一样:UInt64value1=1073741824*8;//CompileerrorCS0220UInt64value2=8589934592;//Actualvalue-noerror为什么会这样? 最佳答案

c# - 无法将类型 'double' 隐式转换为 'long'

在这段代码中,我在评论的行中遇到了上述错误。publicdoublebigzarb(longu,longv){doublen;longx;longy;longw;longz;string[]i=textBox7.Text.Split(',');long[]nums=newlong[i.Length];for(intcounter=0;counter=seconddigits){n=firstdigits;}else{n=seconddigits;}if(u==0||v==0){MessageBox.Show("theMultiplyis0");}intintn=Convert.ToIn

C#:通用数学函数(Min、Max 等)

我正在考虑为基本数学运算(如Min、Max等)编写通用函数。但是我不知道如何比较两个通用类型:publicTMax(Tv1,Tv2)whereT:struct{return(v1>v2?v1:v2);}那怎么样?谢谢。 最佳答案 您可能想要constrain要实现的通用类型IComparable:publicTMax(Tv1,Tv2)whereT:struct,IComparable然后使用CompareTo方法:{return(v1.CompareTo(v2)>0?v1:v2);} 关

c# - 两个数组的乘积之和(点积)

首先,我知道我的标题可以表述得更好,但是我的数学课太远了,我记不起正确的单词了..我需要做这样的事情(伪c#)int[]digits1=newint[10]{0,1,2,3,4,5,6,7,8,9};int[]digits2=newint[10]{0,1,2,3,4,5,6,7,8,9};intresult=digits1*digits2这将是每个数组的元素[i]的乘积之和。这显然行不通。对更好的标题或解决方案有什么建议吗?编辑澄清:我知道我可以将它们都循环并进行数学运算。基本上我认为有更好的方法可以做到这一点,我纯粹出于个人好奇而寻找它。 最佳答案