有一个奇怪的行为双解析字符串输入?

时间:2010-12-31 09:11:02

标签: c# visual-studio visual-studio-2010

我尝试读取一些excel文件并转换一些字符串列以保存在db中。但我面对一些双解析错误:double result = double.Parse(1,15); 结果:1.149999999999 ....我不想看到这个。我想要double result = double.Parse(1,15);结果= 1.15


 static void Main(string[] args)
        {
            NumberStyles styles;
            IFormatProvider provider;

            styles = NumberStyles.Float;
            provider = CultureInfo.CreateSpecificCulture("tr-TR");

            string test = "1,15";
            double result = double.Parse(test, styles, CultureInfo.CreateSpecificCulture("tr-TR"));
            Console.WriteLine(result.ToString());
        }
    }

3 个答案:

答案 0 :(得分:1)

如果需要高精度数据类型,请使用数据库和应用程序的decimal数据类型。

答案 1 :(得分:0)

你解析为浮点数,但转换为double - float不准确,因此你看到错误的原因。

您的代码应为:

double result = double.Parse(...);

而不是:

double result = float.Parse(...);

编辑:

旁注:当您将某些内容转换为字符串时,如果您希望进行往返,请使用value.ToString("R");这将表示字符串的确切值,而不是截断值。

答案 2 :(得分:0)

在代码中看起来像错误:double result = float .Parse(); double.parse()应该可以正常工作。