【问题标题】:C# conversion issue from a generic value to string从通用值到字符串的 C# 转换问题
【发布时间】: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,我该怎么做?

谢谢

【问题讨论】:

    标签: c# generics type-conversion scientific-notation


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-27
      • 1970-01-01
      • 2016-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多