【发布时间】:2018-03-14 15:12:24
【问题描述】:
我有两个盒子:一个 Win7 和另一个 Win10(还有一个 Windows Server 2012 盒子,它的行为与我的 Win10 盒子相同)。
在所有盒子上都安装了 .NET 版本 4.5.2。
当我运行以下代码时:
Dim d As Decimal = 1.23
Console.WriteLine((d / 100D).ToString("P3"))
然后我在 Win7 上得到这个结果:
1,230%
在 Win 10 和 Windows Server 2012 上我得到这个结果:
1,230 %
注意百分号前的空格。
谁能帮我弄清楚为什么会这样?我仔细检查了 .NET 版本,它们都是 4.5.2,所以这可能与操作系统有关吗?
非常感谢大家。
更新:
使用
Console.WriteLine((d / 100D).ToString("P3", CultureInfo.InvariantCulture))
我在所有机器上都得到了这个结果:
1,230 %
但是输出的时候
Console.WriteLine(Thread.CurrentThread.CurrentCulture.Name)
在我得到的所有机器上
de-DE
我原以为文化一定会因为产生不同的结果而表现出不同的东西,但由于一切都是 de-DE,我仍然不明白为什么不同操作系统上的输出会有所不同。
更新 2
...还有这个
Console.WriteLine((d / 100D).ToString("P3", CultureInfo.GetCultureInfo("de-DE")))
Win7 上的结果:
1,230%
在 Win 10 和 Windows Server 2012 上我得到这个结果:
1,230 %
很奇怪,相同的文化,不同的输出......
【问题讨论】:
标签: .net vb.net operating-system .net-4.5