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

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

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

我已经检查了两个系统的注册表设置是否完全相同,相同的语言,相同的数字格式等。

我的代码看起来像这样

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服务器中时,输出与Windows 10中的.net Framework 2.0中运行的输出不同。

例如,值为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相同的输出吗?

谢谢

c# .net decimal string-conversion
1个回答
0
投票

回答我自己的问题,我发现问题是,在Windows 2000中,db驱动程序有时将值返回为Int,而其他值则返回为十进制,而在Windows 10中则始终为十进制。因此问题出在数据库驱动程序而不是.net框架。

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