Visual Studio 编译器错误(不能使用逗号)

麦克风 -

我的 Visual Studio 使用 C# 时遇到问题。我正在使用 .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)

以下是编译器的图片:

在线编译器(工作正常)

编译器 Visual Studio(不能正常工作)

有谁知道我该如何解决这个问题?我已经重新安装了 Visual Studio,但它没有修复它。

阿德里安鼹鼠

问题在于您的 PC 具有使用点 ( .) 作为数字分隔符而不是小数点的语言/文化(区域设置)设置(并且大概是小数点的逗号)。也就是说,100 万将被写成1.000.000并且(近似于)π 将是3,14159在这种文化中,输入点实际上被忽略了,因此62.3被读作623

我不确定你所说的“不能使用逗号”是什么意思(否则,输入62,315,1对于非整数输入值应该有效);但是,您可以通过两种方式解决此问题:

  1. 更改计算机的语言/区域设置;如果您使用的是 Windows 10,则可以从“控制面板”->“时钟和区域”中选择一种使用“预期”小数点的语言(如英语)。

  2. 您可以以编程方式更改区域设置。创建使用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;在源文件顶部附近添加一行。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

也许是Visual Studio 2015中的C#编译器错误

Visual Studio 2015更新3-C ++编译器错误?

所有Visual Studio编译器错误和警告的列表及其编号

如何在Visual Studio中查看模板编译器错误详细信息

在Visual Studio 2013中使用Roslyn编译器

g ++编译器为表达式提供<<类型错误,但可在Visual Studio中使用

Visual Studio 2015更新1中C ++的内部编译器错误

Visual Studio 2013中可能的C / C ++编译器错误

在Visual Studio中使用64位编译器

使用Visual Studio编译器分析内联的C ++函数

编译器错误CS1061 Visual Studio

如何在Visual Studio Code for TypeScript中完全导入而获得编译器错误消息?

使用Visual Studio编译器在编译时获取矢量元素的大小(即使它为空)

解决带有嵌套模板变量的Visual Studio内部编译器错误

在Visual Studio中使用文字整数分配的奇怪行为会导致四个意外的编译器错误

C ++使用Visual Studio 2020不能使用.length()

仅在发行版中的Visual Studio 2019“ C1001内部编译器错误”

使用g ++编译器在Visual Studio中编译C ++程序会在最后生成%

这是Visual Studio 2010编译器中的错误吗?

C ++:使用Visual Studio编译器时的const指针

在Visual Studio 2013中更改编译器错误语言

配置Visual Studio 2013以允许ASPNETCOMPILER使用x64编译器进行预编译

static_assert(std :: is_abstract)在Visual Studio 2013中导致编译器错误

什么是 ?和@符号表明此编译器错误?-Visual Studio 2013编译器

可能的Visual Studio 2015 C ++编译器和IntelliSense错误

当 Visual Studio 运行良好时,向量迭代器上的 LInux g++ 编译器错误

Visual Studio 可能是错误的编译器错误

Visual Studio 2015 的 r 工具中的 Rcpp 编译器错误

如何使用 Visual Studio 编译器在 Windows 上编译 cython 编译的 c 代码