Tag:

C#可以存储比双精度更精确的数据吗?

C#中的double不能满足我的需求。 我正在写一个分形程序,经过几次放大后我的精度不够了。 我有一个数据类型,可以保存比双精度更精确的浮点信息(即更多的小数位)?

C#加倍到十进制精度损失

我有一个双”138630.78380386264″ ,我想将其转换为小数,但是当我这样做时,我通过转换或使用Convert.ToDecimal()来做它,我失去了精度。 这是怎么回事? decimal和double都可以保存这个数字: double doub = double.Parse(“138630.78380386264”); decimal dec = decimal.Parse(“138630.78380386264”); string decs = dec.ToString(“F17”); string doubse =DoubleConverter.ToExactString(doub); string doubs = doub.ToString(“F17”); decimal decC = (decimal) doub; string doudeccs = decC.ToString(“F17”); decimal decConv = Convert.ToDecimal(doub); string doudecs = decConv.ToString(“F17”); 另外:如何在Double上获取ToString()以打印出与调试器显示的相同的结果? 例如138630.78380386264 ?

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

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

双减双给出精度问题

我在.NET中遇到了一个精度问题,我认为这只适用于浮点数,但现在我看到double是浮点数。 double test = 278.97 – 90.46; Debug.WriteLine(test) //188.51000000000005 //correct answer is 188.51 处理这个问题的正确方法是什么? 回合? 丢掉不需要的小数位?

将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#中对十进制数据类型执行数学运算?

我想知道上述情况是否完全可能。 例如: Math.Sqrt(myVariableHere); 在查看重载时,它需要一个double参数,所以我不确定是否有另一种方法可以使用decimal数据类型复制它。

这个部门出了什么问题?

我认为有很多东西要学习数据类型。 为什么会这样 double result = ((3/8)*100).ToString(); 它给零..应该是37,5 …… 🙁

使用String Interpolation将字符串格式化为列

我需要打印双打,以便为字符串表示值分配确定数量的符号(如8)。 下一个单词应该从每个字符串中字符串开头的相同索引处开始。 我现在有: value: 0 test value: 0.3333333333333 test value: 0.5 test 我需要: value: 0 test value: 0.33333333 test value: 0.5 test 测试代码: double[] ar = new double[] { 0, (double)1 / 3, (double)1 / 2 }; string s = “test”; foreach (var d in ar) { Console.WriteLine($”value: {d} {s}”); } 在{d: :?之后我应该添加什么?

C#中的双倍与十进制舍入

为什么: double dividend = 1.0; double divisor = 3.0; Console.WriteLine(dividend / divisor * divisor); 输出1.0, 但: decimal dividend = 1; decimal divisor = 3; Console.WriteLine(dividend / divisor * divisor); 输出0.9999999999999999999999999999 ? 我知道1/3不能精确计算,所以必须有一些舍入。 但是为什么Double将答案舍入1.0,但是Decimal没有? 另外,为什么双倍计算1.0 / 3.0为0.33333333333333331? 如果使用舍入,那么最后3个舍入为0,为什么1?

.NET上的双精度问题

我有一个简单的C#函数: public static double Floor(double value, double step) { return Math.Floor(value / step) * step; } 计算更高的数字,低于或等于“值”,即“步数”的倍数。 但它缺乏精确性,如下面的测试所示: [TestMethod()] public void FloorTest() { int decimals = 6; double value = 5F; double step = 2F; double expected = 4F; double actual = Class.Floor(value, step); Assert.AreEqual(expected, actual); value = -11.5F; step = 1.1F; expected = -12.1F; […]