如何在 C# 中显示浮点值?

How to display float values in c#?

我正在使用 C# 中的结构,当我想显示学生的平均成绩(如“4.53”)时,它会打印“453”。这是代码:

using System;
using System.Buffers;

namespace Struct
{
    struct student
    {
        public string name, surname;
        public float average;
    }

    class Program
    {
        static void Main(string[] args)
        {
            student[] arr = new student[3];
            for (int i = 0; i < 2; i++)
            {
                Console.Write("name {0}. - ", i + 1);
                arr[i].name = Console.ReadLine();
                Console.Write("surname {0}. - ", i + 1);
                arr[i].surname = Console.ReadLine();
                Console.Write("average {0}. - ", i + 1);
                arr[i].average = float.Parse(Console.ReadLine());
            }

            for (int i = 0; i < 2; i++)
            {
                Console.WriteLine("{0} {1} - {2}", arr[i].name, arr[i].surname, arr[i].average);
            }
        }
    }
}

我也试过这个:

Console.WriteLine(string.Format("{0} {1} - {2:.0#}", arr[i].name, arr[i].surname, arr[i].average));

但它不起作用。

arr[i].average = float.Parse(Console.ReadLine());

您看到的那些警告不仅仅是为了展示,它们试图向您解释为什么您编写的代码在客观上是错误的。

具体来说,您正在读取一个浮点值,该值是由一个不会根据他所居住的国家/地区正确书写数字的人编写的。

由于您没有提供此信息,假设您在提示中写了 2.15,您的国家/地区希望将浮点数写为 2,15,而 . 字符改为小数点分隔符。在这种情况下,average 字段将获得值 215,根据您的本地化规则这是正确的。

您忽略的警告暗示了一种可能的解决方案:您自己指定一种文化信息类型,以防它与系统文化信息不匹配,并且一种始终是不错的默认值的可能文化是 CultureInfo.InvariantCulture ,它使用 . 作为小数点,使用 , 作为小数点分隔符。