当前位置:  开发笔记 > 编程语言 > 正文

为什么Convert.ToDouble将我的价值改变1000倍?

如何解决《为什么Convert.ToDouble将我的价值改变1000倍?》经验,为你挑选了1个好方法。

我正在从XML文件中读取一些x和y坐标.

坐标这个样子3.47,-1.54..等等.

当我将值赋值给double变量时

double x, y;
x = Convert.ToDouble(reader["X"]); // X Value: 3.47

价值变成了 3470.00

为什么会这样?



1> Soner Gönül..:

Convert.ToDouble如果您不提供任何方法,默认情况下使用您的CurrentCulture设置. IFormatProvider

看起来你CurrentCulture不会.用作a,NumberDecimalSeparator但它可能用作a NumberGroupSeparator.这就是为什么你的字符串解析为3400没有3.4

作为一个解决方案,你可以使用一个文化已经.一个NumberDecimalSeparator在你的第二个参数Convert.ToDouble的方法类似InvariantCulture.

double x;
x = Convert.ToDouble("3.47", CultureInfo.InvariantCulture); // x will be 3.47 not 3470

对于您的-1.54示例,您需要指定使用组合AllowLeadingSignAllowDecimalPoint样式.不幸的是,Convert.ToDouble没有任何过载NumberStyles作为参数.

为此,您可以使用double.Parse方法.

double x;
x = double.Parse("-1.54", NumberStyles.AllowLeadingSign | NumberStyles.AllowDecimalPoint,
                 CultureInfo.InvariantCulture); // x will be -1.54

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有