对于我们的多层应用程序,我们使用XmlConvert.ToString()
生成xml。
此XML String通过我们的“配置应用程序”发送到物理设备进行配置。
另一个应用程序负责连接此物理设备,并且必须检查远程物理设备是否具有相同的配置。
我们检查每个字段是否具有相同的字符串值。
我们用
写下这个值stringValue = XmlConvert.ToString((decimal)objValue);
我们两个软件之间没有相同的本地,似乎它有效:
我们收到小数值1
。在我的自定义语言环境(fr-CH)的一个应用程序(配置器)上,我有以下输出:
"1"
。
但在另一个应用程序中,使用完全相同的代码,我们会收到输出"1.0"
,从而导致验证失败。
我在经过一些研究(here)后想到XmlConvert.ToString是文化不变的。没有?
此外,我无法配置任何“文化”用于序列化我的小数。我错过了什么?
答案 0 :(得分:0)
由于@Jon Skeet评论,我终于找到了更多的信息。
由于小数点具有“精确”概念(不知道),我接收一次“1.0”,一次“1”(事实上,1.0来自数据库,我猜这会强制一些)。
我找到this来规范化我的小数,这非常有效:
public static class DecimalExtensions
{
public static Decimal Normalize(this Decimal value)
{
return value / 1.000000000000000000000000000000000m;
}
}