我的 C# Visual Studio 遇到问题。我正在使用 .NET 5.0(当前)创建控制台应用程序。
每当我编译程序并输入十进制数字时(例如:62.5,它会将其保存为 625)。我该如何解决这个问题?
这是我一直在使用的代码(它也不会在每个其他程序上保存逗号)。该程序选择 3 个输入中最大的数字
using System;
namespace OEFGREATEST
{
class Program
{
static void Main(string[] args)
{
string input_1_b;
string input_2_b;
string input_3_b;
decimal input_1;
decimal input_2;
decimal input_3;
input_1_b = Console.ReadLine();
input_2_b = Console.ReadLine();
input_3_b = Console.ReadLine();
input_1 = Convert.ToDecimal(input_1_b);
input_2 = Convert.ToDecimal(input_2_b);
input_3 = Convert.ToDecimal(input_3_b);
decimal output_1 = Math.Max(input_1, input_2);
decimal output_2 = Math.Max(output_1, input_3);
Console.WriteLine(output_2);
}
}
}
我一直在使用在线编译器,同时使用完全相同的程序,它可以正常保存十进制数字(例如 62.5 保存为 62.5)
以下是编译器的图片:
The online compiler (works fine)
Compiler Visual Studio (does not work fine)
有人知道我该如何解决这个问题吗?我已经重新安装了 Visual Studio,但没有解决问题。
最佳答案
问题在于您的 PC 的语言/文化(区域设置)设置使用点 (.
) 作为数字分隔符而不是小数点(并且可能是逗号)小数点)。也就是说,100 万将写为 1.000.000
,π(近似值)将写为 3,14159
。在这种文化中,输入点实际上被忽略,因此 62.3
被读取为 623
。
我不确定“不能使用逗号”到底是什么意思(否则,输入 62,3
和 15,1
作为非整数输入值应该有效);但是,您可以通过两种方式解决该问题:
更改计算机的语言/区域设置;如果您使用的是 Windows 10,则可以从“控制面板”->“时钟和区域”,然后选择使用“预期”小数点的语言(例如英语)。
您可以通过编程方式更改区域设置。创建使用
dot
作为小数点的区域性(例如“en-US”),并将其作为第二个参数传递给ToDecimal
调用。这是执行此操作的代码的修改版本:
using System;
using System.Globalization; // For the CultureInfo class
namespace OEFGREATEST
{
class Program
{
static void Main(string[] args)
{
string input_1_b;
string input_2_b;
string input_3_b;
decimal input_1;
decimal input_2;
decimal input_3;
input_1_b = Console.ReadLine();
input_2_b = Console.ReadLine();
input_3_b = Console.ReadLine();
// Create an English/US culture and pass that to the ToDecimal calls ...
CultureInfo CI = new CultureInfo("en-US", false);
input_1 = Convert.ToDecimal(input_1_b, CI);
input_2 = Convert.ToDecimal(input_2_b, CI);
input_3 = Convert.ToDecimal(input_3_b, CI);
decimal output_1 = Math.Max(input_1, input_2);
decimal output_2 = Math.Max(output_1, input_3);
Console.WriteLine(output_2);
}
}
}
请注意,就目前情况而言,上述内容不会更改用于任何输出值的区域设置;因此,如果您最大的输入是 456.7
,它将显示为 456,7
(使用系统默认区域设置)。您可以在执行任何输出之前添加如下行来更改此设置(使用相同的 CultureInfo
对象 CI
):
Thread.CurrentThread.CurrentCulture = CI; // Use this line to change the UI locale
(要使用上述代码,您还需要在源文件顶部附近添加 using System.Threading;
行。)
关于c# - Visual Studio 编译器错误(不能使用逗号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69416454/