Tag: 浮点

C#从float变量中获取数字

我有一个浮点变量,只想得到逗号之后的部分,所以如果我有3.14。 我想得到14作为整数。 我怎样才能做到这一点?

计算最后一个单位(ULP)的单位为双打

.NET是否有内置方法来计算给定double或float的ULP ? 如果没有,最有效的方法是什么?

为什么在由parantheses分隔并且由语句分隔时,C#中的浮点精度会有所不同?

我知道浮点精度在常规情况下是如何工作的,但我偶然发现了我的C#代码中的奇怪情况。 为什么result1和result2在这里不是完全相同的浮点值? const float A; // Arbitrary value const float B; // Arbitrary value float result1 = (A*B)*dt; float result2 = (A*B); result2 *= dt; 从这个页面我认为浮动算术是左关联的,这意味着值以从左到右的方式进行评估和计算。 完整的源代码涉及XNA的Quaternions。 我不认为我的常量是什么以及VectorHelper.AddPitchRollYaw()的作用是什么。 如果我以相同的方式计算三角形俯仰/滚转/偏航角度,测试通过就好了,但是由于代码低于它不通过: X Expected: 0.275153548f But was: 0.275153786f [TestFixture] internal class QuaternionPrecisionTest { [Test] public void Test() { JoystickInput input; input.Pitch = 0.312312432f; input.Roll = 0.512312432f; input.Yaw = […]

将float转换为double丢失精度但不通过ToString

我有以下代码: float f = 0.3f; double d1 = System.Convert.ToDouble(f); double d2 = System.Convert.ToDouble(f.ToString()); 结果相当于: d1 = 0.30000001192092896; d2 = 0.3; 我很想知道为什么会这样?

C#浮动bug? 0.1 – 0.1 = 1.490116E-08

这是怎么回事?! 减法工作正常,直到达到0.1 – 0.1。 我在使用nonoba.com API的visual c#2008中。 Console.WriteLine(“hit! ” + Users[targetNum].character.health + ” : ” + player.character.profile.attackPower); Users[targetNum].character.health -= player.character.profile.attackPower; Console.WriteLine(“health! ” + Users[targetNum].character.health); 输出: hit! 0.1 : 0.1 health! 1.490116E-08 谢谢所有 – 我可能会使用十进制类型,因为我通常添加/减去漂亮的“圆”数字。 现在我只想: if (Users[targetNum].character.health <= 0.00001) 顺便说一句,我知道这不会成为c#中的“bug” – 我认为这可能是由于代码中的错误或者缺乏理解而导致的。 阅读完所有推荐的阅读后,我将得出结论,我的愚蠢是由于通常使用ActionScript Number类型,它可能有一个十进制而不是二进制浮点 – 无论如何,它永远不会给出这个输出。

将双精度数舍入到以位数给出的较低精度的有效方法

在C#中,我希望将双精度舍入到较低的精度,以便我可以将它们存储在关联数组中的不同大小的存储桶中。 与通常的舍入不同,我想要舍入到一些重要的位。 因此,大数字的绝对值会比小数字更改,但它们往往会按比例改变。 因此,如果我想要舍入到10个二进制数字,我会找到十个最高有效位,并将所有低位都清零,可能会添加一个小数字进行舍入。 我更喜欢将“中途”数字四舍五入。 如果它是整数类型,这将是一个可能的算法: 1. Find: zero-based index of the most significant binary digit set H. 2. Compute: B = H – P, where P is the number of significant digits of precision to round and B is the binary digit to start rounding, where B = 0 is the ones place, B […]

比较浮点值

我刚刚阅读了有关浮点值比较的声明 不应使用==或!=运算符比较浮点值。 大多数浮点值没有精确的二进制表示,并且精度有限。 如果是这样,比较两个浮点值的最佳方法是什么?

调试/释放模式下的浮点/双精度

C#/ .NET浮点运算在调试模式和发布模式之间的精度是否不同?

从科学记数法字符串转换为C#中的float

使用C#将科学记数法字符串(如“1.234567E-06”)转换为浮点变量的正确方法是什么?