gpt4 book ai didi

c# - 无法使用 int.Parse 从字符串转换值

转载 作者:行者123 更新时间:2023-12-02 01:42:34 26 4
gpt4 key购买 nike

我正在通过 Linkedin Learning 学习 C#,在一个类中,教授的代码在视频中运行得很好,但完全相同的文件对我不起作用,返回错误:

输入字符串的格式不正确。

这是不起作用的代码:

using System; 
using System.Globalization;

namespace Parsing {
class Program
{
static void Main(string[] args)
{
string numStr = "2.00";

int targetNum=0;
try {

targetNum = int.Parse(numStr, NumberStyles.Float);
Console.WriteLine(targetNum);

}
catch(Exception e) {
Console.Write(e.Message);

}

bool succeeded = false;

if (succeeded) {
Console.WriteLine($"{targetNum}");
}
}
}
}

但是,这确实有效:

using System; 
using System.Globalization;

namespace Parsing {
class Program
{
static void Main(string[] args)
{
string numStr = "2";

int targetNum=0;
try {

targetNum = int.Parse(numStr, NumberStyles.Float);
Console.WriteLine(targetNum);

}
catch(Exception e) {
Console.Write(e.Message);

}

bool succeeded = false;

if (succeeded) {
Console.WriteLine($"{targetNum}");
}
}
}
}

有人能解释为什么其他代码不起作用吗?

最佳答案

您的个人资料显示您居住在巴西,而巴西的“两岁半”是“2,5”,而不是“2.5”。

如果您使用“2,00”运行代码,它应该可以工作。

这是一个不同文化的示例:

foreach(var two in new []{"2.00", "2,00"})
foreach(var culture in new []{"pt-BR", "en-AU"})
{
bool ok = int.TryParse(two, System.Globalization.NumberStyles.Float, new System.Globalization.CultureInfo(culture), out var i);
Console.WriteLine($"For '{culture}' '{two}' is {(ok ? "OK" : "not OK")}");
}

打印:

For 'pt-BR' '2.00' is not OK
For 'en-AU' '2.00' is OK
For 'pt-BR' '2,00' is OK
For 'en-AU' '2,00' is not OK

关于c# - 无法使用 int.Parse 从字符串转换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71404602/

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