十进制转字符串在不同的windows系统中显示不同的十进制值

Decimal into string conversion shows different decimal values in different windows systems

我在 .net framework 2.0 中有一个 c# 代码 运行,当将小数转换为要在文件中打印的字符串时,会在不同的 Windows OS 中产生不同的输出。

我已经检查过两个系统的区域设置完全相同,相同的语言,相同的数字格式等。

我的代码是这样的

object o = dr.GetValue(dr.GetOrdinal(cCol.ColumnName));
string value = Convert.ToString(o);

它正在从数据库中获取一个值,并且该对象的类型为 Decimal(o.GetType()==typeof(Decimal) 计算结果为 true)

问题是,当此程序在 .net Framework 2.0 中运行但在 windows 2000 服务器中时,输出与 [=45= 中的 .net Framework 2.0 中的 运行 不同] 10.

例如值 2016

Windows 2000 输出:“2016”

Windows 10 输出:“2016.00”

我试过以下方法

string value = ((Decimal)o).ToString("0.##"));

那么对于值 2016 的输出是相同的。但是,这就是它变得棘手的地方,如果值是 2016.6,使用这种新方法的输出是:

Windows 2000 输出:“2016.60”

Windows 10 输出:“2016.6”

所以我无法让它在两个系统中输出相同的内容。

问题的根源是什么?有什么方法可以让我在 windows 10 中获得与 Windows 2000 相同的输出?

谢谢

回答我自己的问题我发现问题是在 windows 2000 中 db 驱动程序 returns 有时值作为 Int 而其他值作为十进制,而在 Windows 10 中总是十进制。所以问题出在数据库驱动程序而不是 .net 框架中。