草庐IT

Double-precision_floating-point_f

全部标签

c# - float 的乘法性能不一致

在.NET中测试float的性能时,我偶然发现了一个奇怪的情况:对于某些值,乘法似乎比正常情况慢得多。这是测试用例:usingSystem;usingSystem.Diagnostics;namespaceNumericPerfTestCSharp{classProgram{staticvoidMain(){Benchmark(()=>float32Multiply(0.1f),"\nfloat32Multiply(0.1f)");Benchmark(()=>float32Multiply(0.9f),"\nfloat32Multiply(0.9f)");Benchmark(()=>f

c# - VISIBLOX,WPF : Getting chart points to scroll horizontally?

我正在使用VisibloxWPFAPI,但无法让折线图中的图表点水平滚动。这些点不是滚动,而是被压在一起,这不是特别的问题,除了我希望图表上有100个数据点。我查看了Visiblox网站上提供的所有示例,但找不到我要找的东西。我附上了示例屏幕截图。有什么想法吗?感谢您的帮助,闪闪发光 最佳答案 默认情况下,Visiblox图表将重新计算范围以包括系列中的所有数据,因此有两种可能的方法:1)当您添加最后一个点时,删除第一个点,这将有效地移动可见窗口指向上方或2)设置一个明确的轴范围并在您想要移动可见窗口时更新它。查看Visiblox博

c# - 从 int 转换为 float 的问题

有一个我无法理解的奇怪行为。同意float是近似值,因此即使显然返回没有小数的数字的操作也可以近似为带小数的数字。我这样做:intnum=(int)(195.95F*100);因为这是一个浮点运算,所以我得到19594而不是19595..但这是正确的。让我困惑的是,如果我这样做floatflo=195.95F*100;intnum=(int)flo;我得到了19595的正确结果。知道为什么会这样吗? 最佳答案 我想看看这是不是编译器在做数学运算,但即使你强制它,它的行为也是这样的:staticvoidMain(){inti=(int

c# - .NET “double” 算法是否独立于平台/体系结构?

如果我在Windows(x86和x64)下的.NET上运行涉及System.Double的复杂计算,然后在Mono(Linux、Unix等)上运行,绝对有保证以在所有情况下得到完全相同的结果,或者规范是否允许在计算中有一些回旋余地? 最佳答案 来自MSDNInaddition,thelossofprecisionthatresultsfromarithmetic,assignment,andparsingoperationswithDoublevaluesmaydifferbyplatform.Forexample,theresul

c# - 要比较 double 和十进制,我应该将 double 转换为十进制还是将十进制转换为 double ?

我需要比较两个值。一个值是price这代表某物的当前价格等等decimal因为您实际上可以按照这个价格买卖东西。另一个值是estimatedPrice这是数学计算的结果,所以double因为它只是estimation你实际上不能通过这个esitmatedPrice做任何“操作”现在我想买如果price.那么我应该将price转换为double还是将estimatedPrice转换为decimal?我知道在转换后我会得到“略微不同”的数字,但似乎我没有其他选择。 最佳答案 这取决于数据。十进制具有更高的精度;double的范围更大。如

c# - 什么时候 System.Double 不是 double?

在看到double.Nan==double.NaN在C#中始终为false之后,我开始好奇相等性是如何在幕后实现的。所以我使用Resharper反编译了Double结构,这是我发现的:publicstructDouble:IComparable,IFormattable,IConvertible,IComparable,IEquatable{//stuffremoved...publicconstdoubleNaN=double.NaN;//morestuffremoved...}这似乎表明结构Double声明了一个常量,该常量是根据这个特殊的小写字母double定义的,尽管我一直认为

C# float.Parse 字符串

我是C#新手,需要从文件中读取float值(x,y,z)。看起来像:0-0.01-0.0020.000833333333333-0.01-0.002如果我正在尝试floatnumber=float.Parse("0,54");//itworkswell,butfloatnumber=float.Parse("0.54");//gainsexepction.我从每一行读取值的代码(可能有问题):intbegin=0;intend=0;for(inti=0;i有人可以帮忙吗? 最佳答案 float.Parse(string)method

c# - 将秒数添加到具有 ArgumentOutOfRangeException 的有效 double 结果的 DateTime

下面的代码会崩溃和烧毁,我不明白为什么:DateTimedt=newDateTime(1970,1,1,0,0,0,0,DateTimeKind.Utc);doubled=double.Parse("1332958778172");Console.Write(dt.AddSeconds(d));有人能告诉我这是怎么回事吗?我只是似乎无法弄清楚为什么...编辑此值来自SalesforceRESTAPI,据我所知,它是一个Unix纪元时间戳。“token发行时间,表示为自Unix纪元(1970年1月1日00:00:00UTC)以来的秒数。”解决方案SalesforceRESTAPI实际上在

c# - 检查 int、string、double 等任何类型的 null 或 empty 的通用方法

我正在尝试让它工作,但不知何故它超出了我的控制范围......我希望能够检查null或empty到我分配的任何类型。例如:inti=0;stringmystring="";varreult=CheckNullOrEmpty(10)//passingintvarresult1=CheckNullOrEmpty(mystring)//passingstringpublicboolCheckNullOrEmpty(Tvalue){//checkfornulloremptyforstrings//checkfornulli.e.0forint}有人可以帮我解决这个问题吗?我想了解泛型如何适用于

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