gpt4 book ai didi

c# - InvariantCulture ToString 在用文化重载 ToString 的对象上

转载 作者:太空宇宙 更新时间:2023-11-03 19:55:38 34 4
gpt4 key购买 nike

这是我的问题,我的机器使用法语文化,因此默认情况下它以法语方式解析 (3,141592)。

如果机器文化不是美国,这里是重现我的问题的代码:

    float number = 4103.2680894812f;
Object numObj = number;
double val = Double.Parse(numObj.ToString(), CultureInfo.InvariantCulture);
System.Console.WriteLine(val.ToString(CultureInfo.InvariantCulture));

乍看之下这应该可以工作,但是 Float ToString 重载并使用了区域性,所以这实际上不起作用。

问题是实际上返回给我的只是一个对象,因为它可能是 String、Float、Double 或 Int。

临时解决方案是使用 GetType() 并进行检查,但我想知道是否有更简洁的解决方案。

最佳答案

你可以使用这个:

var currentCulture = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrenCulture = CultureInfo.InvariantCulture;
try
{
string s = numObj.ToString();
}
finally
{
Thread.CurrentThread.CurrentCulture = currentCulture;
}

或者,使用这个:

string s;
var formattable = numObj as IFormattable;
if (formattable != null)
{
s = formattable.ToString(null, CultureInfo.InvariantCulture);
}
else
{
s = numObj.ToString();
}

关于c# - InvariantCulture ToString 在用文化重载 ToString 的对象上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34004542/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com