无法使用 int.Parse 从字符串转换值
Can't convert value from string using int.Parse
我正在从 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
我正在从 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