floating-point-conversion
全部标签 我有以下代码: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
我有一些执行浮点/double运算的C#单元测试,我想对它们进行单元测试。由于舍入错误,Assert.AreEqual不足。以单位换算为例。10.5米换算为英尺的换算系数为3.281,所以我得到34.4505。使用更准确的换算系数得到34.4488189。我想在0.1之内测试这个(所以34.3488-34.5488会通过测试)。我当然可以在我的单元测试中手动测试具有容差的值,但这是高度重复的,并且失败消息不会非常具有描述性(同样无需编写我自己的Assert失败消息):Assert.IsTrue(Math.Abs(34.4488189-value)如何在一定的容错范围内对我的float操
我在使用VS2012.net4.5编译为64位的Windows764位商业产品中遇到了一个非常奇怪的问题。以下测试代码在单独的项目中执行时表现符合预期(使用NUnit测试运行器):[Test]publicvoidTest(){floatx=0.0f;floaty=0.0f;floatz=0.0f;if((x*x+y*y+z*z)测试返回与现在这是奇怪的部分。当我在我们的商业产品的上下文中运行此代码时,此测试失败。我知道这听起来有多愚蠢,但我正在抛出异常。我已经调试了这个问题,当我评估条件时,它始终为真,但编译后的可执行文件仍然没有进入条件的真分支并抛出异常。在商业产品中,只有当我的测试
使用C#从科学计数法字符串(如“1.234567E-06”)转换为浮点变量的正确方法是什么? 最佳答案 Double.Parse("1.234567E-06",System.Globalization.NumberStyles.Float); 关于c#-在C#中将科学计数法字符串转换为float,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/64639/
我猜这个问题的另一种表述方式是,使用仅介于0和1之间的float可以转到小数点后几位?我试图通过查看MSDN来解决这个问题.其中表示精度为7位数。我认为这意味着它只能跟踪0.0000001的变化。但是如果我这样做:floattest=0.00000000000000000000000000000000000000000001f;Console.WriteLine(test);它写出9.949219E-44如果我添加更多的零,它将输出0。我很确定我在这里遗漏了一些东西,因为这种准确度似乎大错特错。主要是因为float的大小是32位,而且从0到1的精度级别包含1e+44个可能的数字...
请看下面我的例子。floatmaxFloat=float.MaxValue;strings=maxFloat.ToString();floatresult=float.Parse(s);//samewithConvert.ToSingle(s);boolmustEqual=(maxFloat==result);//ItreturnsFALSE,why? 最佳答案 您应该使用"R"格式字符串:https://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx.https:/
你们谁能解释为什么会这样?staticvoidMain(){constfloatxScaleStart=0.5f;constfloatxScaleStop=4.0f;constfloatxScaleInterval=0.1f;constfloatxScaleAmplitude=xScaleStop-xScaleStart;constfloatxScaleSizeC=xScaleAmplitude/xScaleInterval;floatxScaleSize=xScaleAmplitude/xScaleInterval;Console.WriteLine(">constfloat{0},
几年前,我学到了有关float精度问题的艰难方法,所以我不再使用它们。然而,我仍然遇到使用float的代码,这让我感到畏缩,因为我知道有些计算会不准确。那么,什么时候适合使用float呢?编辑:作为信息,我认为我没有遇到过数字准确性不重要的程序。但我有兴趣听听例子。 最佳答案 简短的回答:只有当您确切地知道自己在做什么以及为什么这样做时,您才需要使用float。长答案:据我所知,floats(相对于doubles)在3DAPI之外不再真正使用。float和double在现代CPU上具有相同的性能特征,double更大一些,仅此而已。
我有一个Floats数组,需要将其转换为字节数组并返回到float[]...谁能帮我正确地做到这一点?我正在使用bitConverter类,发现自己无法尝试附加结果。我这样做的原因是我可以将运行时值保存到IO流中。如果重要的话,目标存储是Azure页面blob。我不关心它存储在什么字节序中,只要它的输入与输出相匹配即可。staticbyte[]ConvertFloatToByteArray(float[]floats){byte[]ret=newbyte[floats.Length*4];//asinglefloatis4bytes/32bitsfor(inti=0;i
在CSharp中解析float的最佳方法是什么?我知道TryParse,但我特别想知道的是点、逗号等。我的网站有问题。在我的开发服务器上,','代表小数,'.'为分隔符。但是在产品服务器上,情况正好相反。我怎样才能最好地捕捉到这一点? 最佳答案 我同意leppie的回复;用代码来表达:strings="123,456.789";floatf=float.Parse(s,CultureInfo.InvariantCulture); 关于c#-解析float的最佳方法?,我们在StackOv