gpt4 book ai didi

c# - 如何编写与语言无关的 double.tryparse?

转载 作者:行者123 更新时间:2023-11-30 17:45:51 25 4
gpt4 key购买 nike

我得到了代表 double 的字符串值。 (例如“1.23”)。始终带有“.”。

如果你运行代码:

double dDouble =0;
string sDemo ="1.23";
double.TryParse(sDemo,out dDouble));

它将 1.23 返回给 dDouble 变量。

如果我切换到另一种语言,将“,”作为“。” .... 我得到 123.0 作为 dDouble。

我如何确保它始终为 1.23 ...

double dDouble =0;
string sDemo ="1.23";
double.TryParse(sDemo,System.Globalization.NumberStyles.Any,
System.Globalization.CultureInfo.InvariantCulture, out dDouble));

但我不确定这是否会永久解决问题。

我刚试过

最佳答案

10 年前我会这样解决(不要那样做):

sDemo = sDemo.Replace(",",".");

现在

// to string
var text = someDouble.ToString(NumberFormatInfo.InvariantInfo);
// and back
var number = double.Parse(text, NumberFormatInfo.InvariantInfo);

关键点是使用相同文化。如果您转换值供内部使用(例如,将 double 值作为文本的一部分传递)- 使用不变区域性。但是,如果您想将它显示给用户然后读取用户输入,那么仍然使用相同的区域性:如果您没有为 ToString 指定区域性,那么不要不要为 Parse 指定它,如果你这样做了,那么再做一次。

关于c# - 如何编写与语言无关的 double.tryparse?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27059854/

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