从通用值到字符串的 C# 转换问题
Posted
技术标签:
【中文标题】从通用值到字符串的 C# 转换问题【英文标题】:C# conversion issue from a generic value to string 【发布时间】:2014-08-06 11:25:40 【问题描述】:我遇到了一个很奇怪的问题,....
我有一个代码,它读取 XML 并转换每个值,而不管它是什么类型,例如 int、float、double 或 String,它本身为 String 值,然后将其存储到 String 变量中。
String column = System.Convert.ToString(values.GetValue(rowNum, colNum))
我遇到的问题是,假设“values.GetValue(rowNum, colNum)”返回 0.000003825,然后运行时,转换并存储在“列”中的值是“3.825E-06”,这是科学的我并不真正想要的符号,
我希望“列”以字符串格式存储值 0.000003825,我该怎么做?
谢谢
【问题讨论】:
【参考方案1】:您需要提供格式信息。不幸的是,您无法向System.Convert.ToString()
提供格式信息。相反,您必须致电string.Format()
或object.ToString()
。
例如:
double value = 0.000003825;
string s1 = value.ToString("0.################");
Console.WriteLine(s1);
string s2 = string.Format("0:0.################", value);
Console.WriteLine(s2);
【讨论】:
"双值 = 0.000003825;"在您的示例中,“值”是双倍的,但在我的情况下它是通用的。 @SyedSirajUddin “通用”是指“对象”吗?您的问题是您无法为对象指定格式。您有时需要知道它是什么类型才能为其提供格式。如果你不能这样做,你将无法设置格式。 是的,我的意思是反对,谢谢你意识到这一点......但仍在寻找是否有更好的解决方案......【参考方案2】:尝试 ToString() 将其转换为对象
【讨论】:
你的意思是把它转换成字符串:) 调用 ToString() 或 Convert.ToString() 都返回他不想要的格式。【参考方案3】:好的,我现在已经解决了这个问题..
无论我们通过 obj 传递什么类型的值,它都可以发挥作用,
谢谢。
Object obj = -0.00002357467;
String value = obj.ToString();
String type = obj.GetType().ToString();
if (type.Equals("System.Double")&&value.Contains("E-"))
double doubleValue = (double)obj;
value = doubleValue.ToString("0.############################"); //thanks @Matthew Watson
Console.WriteLine(value); //prints -0.00002357467
【讨论】:
以上是关于从通用值到字符串的 C# 转换问题的主要内容,如果未能解决你的问题,请参考以下文章