【问题标题】:XmlWriter disable convert valueXmlWriter 禁用转换值
【发布时间】:2012-07-20 09:05:46
【问题描述】:

我在保存过程中遇到了 XmlWriter 的问题,例如:0.000036 值。在序列化期间,它转换为 3.6E-05 值。我不知道为什么!

如果有人知道如何解决这个问题,我将不胜感激。 下面是我的代码示例:

XDocument doc = new XDocument();

using (XmlWriter writer = doc.CreateWriter()) {
    xs.Serialize(writer,o);   
}

XElement xElement = doc.Root;

return xElement;

【问题讨论】:

    标签: c# .net xml-serialization xmlwriter


    【解决方案1】:

    XmlWriter 将强类型数据转换为字符串。

    如果你尝试

    var val = 0.000036;
    var stringval = val.ToString();
    

    你会得到

    "3.6E-05"
    

    如果你尝试那么

    var doubleVal = Convert.ToDouble(stringval);
    

    你会得到

    0.000036 再次。

    所以基本上,它只是值的字符串表示。

    顺便说一句,你也可以声明一个double为

    var myDouble = 3.6E-05;
    

    【讨论】:

    • 来自 msdn:XmlWriter 根据 XML Schema (XSD) 数据类型规则将值转换为其字符串表示形式 XML Schema
    • 这是我期望的答案。非常感谢:)
    • 但我还有一个与之前有关的问题。我描述情况。我从文本框中序列化值,例如 0.000036。在 Xml 对象中保存为 3,6E-05。接下来我想检索这个值(3,6E-05)并将文本框分配给文本属性(字符串)。但我想在文本框内定位值 0.000036 而不是 3,6E-05。我该怎么做?
    • @Jaro 好吧,你可以做类似val.ToString(".###########") 的事情。 # 的数量 = . 之后显示的最大位数
    【解决方案2】:

    这些值相等是没有问题的(因为 double 可以相等)。这只是3.6 * 10^-5 的语法。

    【讨论】:

      猜你喜欢
      • 2013-01-29
      • 1970-01-01
      • 1970-01-01
      • 2010-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-16
      相关资源
      最近更新 更多