Tag: double

Double.TryParse()输入小数分隔符不同于系统小数分隔符

我有一个使用点(“。”)作为小数分隔符的源XML,我在使用逗号(“,”)作为小数分隔符的系统上解析它。 结果,使用Double.TryParse或Double.Parse将值0.7解析为7000000。 我有什么选择正确解析? 其中一个是用String.Replace(‘.’, ‘,’)用逗号替换源中的点,但我不认为我非常喜欢这个。

如何通过double值对List 进行排序?

这听起来很简单但不是那么多。 我想根据T的一个属性订购一个List,它是双重类型。

为什么double.Parse(“0.05”)返回5.0?

我正从App.config中读取一个值; 这是: 我尝试通过以下方式将其转换为双倍: var d = double.Parse(ConfigurationManager.AppSettings[“someValue”]); 而我获得5.0而不是0.05。 你能建议吗? 我做错了什么,我应该如何解析?

C#双加 – 奇怪的行为

public static void Main() { Dictionary values = new Dictionary(); values.Add(“a”, 0.002); values.Add(“b”, 0.003); values.Add(“c”, 0.012); // Summing iteratively. double v1 = 615.0; foreach (KeyValuePair kp in values) { v1 += kp.Value; } Console.WriteLine(v1); // Summing using the Sum method. double v2 = 615.0; v2 += values.Values.Sum(); Console.WriteLine(v2); Console.ReadLine(); } 当我在调试器中查看v1的值时,它给出的值为615.01699999999994,但对于v2,它给出的值为615.017。 由于某种原因,Sum方法产生准确的结果,而迭代地对它们求和则不然。 (当我打印这两个值时它们是相同的,但我认为这是由于WriteLine方法所做的一些舍入。) 有谁知道这里发生了什么?

Double.Parse – 国际化问题

这真让我抓狂。 我在ASP.NET 2.0 WebForm页面中有以下字符串 string s = “0.009”; 很简单。 现在,如果我的文化是西class牙语 – 这是“es-ES” – 我尝试将字符串转换为Double,我会执行以下操作: double d = Double.Parse(s, new CultureInfo(“es-ES”)); 我期待的是0,009。 相反,我得到9.我明白.NET认为它是千分隔符,在en-US中是一个逗号,但不应该把我传递给parse方法的文化信息并应用正确的格式转换? 如果我做 double d = 0.009D; string formatted = d.ToString(new CultureInfo(“es-ES”)); 格式化现在是0,009。 任何人?

如果为零,则字符串为double跳过最后一个小数?

这是我的问题。 我需要转换说“5.550”(字符串)加倍为5.550,这是双倍的3位十进制数字。 我在解析时尝试了IFormatProvider但没有使用。它一直跳过最后的零()。 请指教。 谢谢,Kumar MA

为什么这段代码不能certificate读/写的非primefaces性?

阅读这个问题 ,我想测试一下我是否能够certificate对这种操作的primefaces性无法保证的类型的读写非primefaces性。 private static double _d; [STAThread] static void Main() { new Thread(KeepMutating).Start(); KeepReading(); } private static void KeepReading() { while (true) { double dCopy = _d; // In release: if (…) throw … Debug.Assert(dCopy == 0D || dCopy == double.MaxValue); // Never fails } } private static void KeepMutating() { Random rand = new […]

c#Convert.ToDouble格式exception错误

我正在尝试将此字符串转换为double Convert.ToDouble(“1.12”); 这是输出 System.FormatException未处理。 我应该这样做吗? public static double ConvertToDouble(string ParseVersion) { double NewestVersion; try { NewestVersion = Convert.ToDouble(ParseVersion); } catch { ParseVersion = ParseVersion.Replace(‘.’, ‘,’); NewestVersion = Convert.ToDouble(ParseVersion); } return NewestVersion; } ConvertToDouble(“1.12”); 或者是否有更简单的解决方案?

浮点精度

我有一个用C#编写的程序,有些部分是用本机C / C ++编写的。 我使用双精度计算某些值,有时结果是错误的,因为精度太小。 经过一番调查后,我发现有人将浮点精度设置为24位。 当我将精度重置为至少53位(使用_fpreset或_controlfp)时,我的代码工作正常,但我仍然需要弄清楚谁负责将精度设置为24位。 我能做到这一点的任何想法?

为什么返回C#Convert.ToDouble(5/100)0.0而不是0.05

double variable = Convert.ToDouble(5/100); 将返回0.0但我预计0.05 什么可以/必须改变得到0.05 因为这个例子中的5是一个变量