C# 从序列化XML中的小数中删除小数点

C# 从序列化XML中的小数中删除小数点,c#,xml-serialization,decimal,C#,Xml Serialization,Decimal,我正在使用XmlSerializer和从xsd创建的类一起使用xsd.exe。这几个月来一直运作良好 现在我收到报告说,在某些情况下,创建的xml文件将所有小数序列化而没有小数点,例如,123.45被序列化为12345 我无法重现这个问题,但我怀疑它可能与本地化有关 这是我的第一个C#项目,所以我可能忽略了一些基本的东西 本地化会导致此问题吗? 如何使序列化过程独立于区域设置 有没有其他可能导致这个问题的想法?在一些国家,他们使用逗号作为十进制分隔符,用点分隔千,所以你的直觉可能是正确的。如果您

我正在使用
XmlSerializer
和从
xsd
创建的类一起使用
xsd.exe
。这几个月来一直运作良好

现在我收到报告说,在某些情况下,创建的xml文件将所有小数序列化而没有小数点,例如,123.45被序列化为12345


我无法重现这个问题,但我怀疑它可能与本地化有关

这是我的第一个C#项目,所以我可能忽略了一些基本的东西

本地化会导致此问题吗?
如何使序列化过程独立于区域设置


有没有其他可能导致这个问题的想法?

在一些国家,他们使用逗号作为十进制分隔符,用点分隔千,所以你的直觉可能是正确的。如果您使用的是
float
或另一种包含小数的数据类型,
XmlSerializer
在任何情况下都不应丢弃小数。但是,如果在这样一个国家,您阅读Xml时没有指定区域性,它可能会忽略点


因此,如果您不指定类似于
InvariantCulture

“我无法重现问题”-这是您的第一步,那么在一个国家序列化并在另一个国家反序列化的Xml将导致问题。@mitch True。明天我将访问发生问题的站点,但我想知道该查找什么。感谢您为我指明了正确的方向。“反序列化”部分实际上是一些从文本文件读取值的自定义代码。有一些
.ToDecimal()
在那里,我添加了
InvariantCulture
,这似乎在快速测试中解决了问题。