在C#中使用什么格式进行数字的xml序列化?

问题描述 投票:8回答:1

我写的时候:

var d = 12.34D;
d.ToString();

它给"12,34",但是当我用双字段序列化对象时,它给出了"12.34"

这是因为XmlSerializer使用了一些特定的格式/文化?到底是什么?我查看了Double的源代码,但没有看到IXmlSerializable的实现。谢谢。

c# xml-serialization
1个回答
8
投票

XmlSerializerWriter使用XmlConvert.ToString来转换值。

该类的相关部分是this

return value.ToString("R", NumberFormatInfo.InvariantInfo);

所以它使用了不变文化,它恰好输出符合XML RFC的字符串(所以作为小数分隔符的句号)。

格式说明符"R"记录为here

往返(“R”)格式说明符尝试确保将转换为字符串的数值解析回相同的数值。仅对Single,Double和BigInteger类型支持此格式。

这意味着在反序列化字符串值时,另一端将产生相同的double结果。

© www.soinside.com 2019 - 2024. All rights reserved.