Tag:

C#类型后缀为十进制

我不知道我正在努力实现的正确措辞是什么,所以它可能已经在网上发布。 如果是,请善待。 好吧基本上我有这个方法。 public static T IsNull(IDataReader dr, String name, T nullValue) { return Helpers.IsNull(dr, dr.GetOrdinal(name), nullValue); } public static T IsNull(IDataReader dr, Int32 index, T nullValue) { if (dr.IsDBNull(index)) { return nullValue; } else { return (T)dr.GetValue(index); } } 被称为Helpers.IsNull(dr, “UnitWholeSale”, 0d) ,我得到的错误是“无法从double转换为十进制”。 现在我知道我可以使用decimal.Zero但有一些方法我可以简单地去0dec或类似的东西吗? 我只是讨厌那些冗长的快捷方式值(特别是在调用带有20个参数的构造函数时)。

双精度值无法正确表示哪些值

Double数据类型无法正确表示某些基数10的值。 这是因为浮点数代表实数。 这意味着当表示货币值时,应该使用十进制值类型来防止错误。 (随意更正此序言中的错误) 我想知道的是,在标准.Net框架下64位架构下的双数据类型下出现这样一个问题的值是什么(C#如果有所不同)? 我希望答案是一个公式或规则来找到这样的值,但我也想要一些示例值。

无法将List ‘隐式转换为’double’

继续投掷,我的代码的这部分有什么问题,当我想返回单元格时收到此错误不能隐式地将类型’System.Collections.Generic.List’转换为’double’: public double readFileToList(string Path) { var cells = new List(); string path = label3.Text; if (File.Exists(path)) { double temp = 0; cells.AddRange(File.ReadAllLines(path) .Where(line => double.TryParse(line, out temp)) .Select(l => temp) .ToList()); int totalCount = cells.Count(); cellsNo.Text = totalCount.ToString(); } return cells; }

将double转换为float而不使用Infinity

我使用旧的float myFloat = (float)myDouble将double转换为float。 然而,这有时会导致“无限”,这对我正在进行的进一步处理不利。 只要它指向一般方向作为原始数字(我要转换的所有数字的相对数量’强度’必须保持),我对损失没问题。 如何将float转换为double并避免Infinity? 背景: 我正在从wav / mic读取字节流,将其转换为float ,将其转换为double ,通过FFT计算运行(这需要double ),现在我想让它恢复float (将数据存储在32位中)图像容器)。

划分双打时C#精度损失

我知道这已经一次又一次地讨论了,但我似乎无法得到一个一步一步的双重划分的最简单的例子,导致C#的预期的,不完整的结果 – 所以我想知道是否也许有一些编译器标志或其他奇怪的我没有想到的。 考虑这个例子: double v1 = 0.7; double v2 = 0.025; double result = v1 / v2; 当我在最后一行之后断开并在VS调试器中检查它时,“result”的值是27.999999999999996。 我知道我可以通过更改为“十进制”来解决它,但在周围程序的情况下这是不可能的。 像这样的两个低精度双倍不能分成28的正确值是不奇怪的? Math.Round的结果是唯一的解决方案吗?

.net中有128或256位双等级吗?

我有一个应用程序,我希望能够使用大数字和非常精确的数字。 为此,我需要一个精确的解释,IntX只适用于整数。 在.net框架中是否有一个类甚至第三方(最好是免费的)可以这样做? 还有另一种方法吗?

C#双重格式对齐十进制符号

我将数字与不同的小数位数对齐,以便小数符号在直线上对齐。 这可以通过填充空格来实现,但我遇到了麻烦。 Lays说我想对齐以下数字:0 0.0002 0.531 2.42 12.5 123.0 123172 这是我追求的结果: 0 0.0002 0.531 2.42 12.5 123.0 123172

对double进行转换是否始终返回相同的值?

铸造double float总是产生相同的结果,还是会有一些“四舍五入的差异”? 例如,是x in float x = (float)0.123456789d; 总是一样的价值? 将float浮动为double,然后将其转换为float,即。 (float)(double)someFloat ? 最感兴趣的是C#中的结果,但如果您对其他语言的工作原理有所了解,请随时分享。

将字符串强制为2位小数

我有一个显示双重的转发器项目。 偶尔双重似乎出现了像小编这样的1165.833。 我试图通过将其包装在string.format方法中来强制它到两位小数,但它仍然是相同的: 任何想法为什么?

为什么这两个双打的简单计算不准确?

可能重复: C#(4):double减去double给出精度问题 86.25 – 86.24 = 0.01 一般来说,我认为上述陈述是对的吗? 但是,如果我输入此内容 double a = 86.24; double b = 86.25; double c = b – a; 我发现c = 0.010000000000005116 为什么是这样?