我正在开发一个温度转换器,最后程序必须以一种安排的方式将华氏温度转换为摄氏度,反之亦然,就像这里的图片
意味着 C、F 和 = 必须在每一行上对齐,我尝试了 string.Format 但它只会给我错误。
for (Farenheit = 0; Farenheit <= maxFarenheit; Farenheit = Farenheit + 5)
{
Celsius = 5 / 9.0 * (Farenheit - 32);
Celsius = Math.Round(Celsius, 2);
Console.WriteLine(Farenheit + " F = " + Celsius + " C");
}
这是循环
最佳答案
如果你愿意
0.00 C = 32.00 F
4.00 C = 39.20 F
8.00 C = 46.40 F
12.00 C = 53.60 F
16.00 C = 60.80 F
20.00 C = 68.00 F
24.00 C = 75.20 F
28.00 C = 82.40 F
32.00 C = 89.60 F
36.00 C = 96.80 F
40.00 C = 104.00 F
44.00 C = 111.20 F
48.00 C = 118.40 F
使用格式指定内插字符串内的列宽。这是通过 $"{value,width:format}"
完成的。请参阅下面的示例代码:
由于这是 C# 且面向对象,因此创建一个类来处理数学是有意义的。
public class Temperature
{
public float Celsius { get; set; }
public float Fahrenheit
{
get
{
return 32f + (9f * Celsius) / 5f;
}
set
{
Celsius = 5f * (value - 32F) / 9F;
}
}
}
class Program
{
static void Main(string[] args)
{
Temperature temperature = new Temperature();
for (int i = 0; i <= 12; i++)
{
temperature.Celsius = 4f * i;
Console.WriteLine($"{temperature.Celsius,6:F2} C = {temperature.Fahrenheit,6:F2} F");
}
}
}
此处 6
的值指定该值将占用的总宽度(6 个空格),并且默认情况下是对齐的。要使值左对齐,请使用负值,例如 -6
。
此外,说明符 F2
表示在点右侧显示两位小数。对于浮点值,请使用 g4
等说明符进行一般格式设置,使用 f4
进行固定小数位数,使用 e4
进行科学记数法。
可以进行改进以在类中包含字符串格式,如下面的代码所示,具有相同的结果。
public class Temperature
{
public float Celsius { get; set; }
public float Farenheit
{
get
{
return 32f + (9f * Celsius) / 5f;
}
set
{
Celsius = 5f * (value - 32F) / 9F;
}
}
public override string ToString()
{
return $"{Celsius,6:F2} C = {Fahrenheit,6:F2} F";
}
}
class Program
{
static void Main(string[] args)
{
Temperature temperature = new Temperature();
for (int i = 0; i <= 12; i++)
{
temperature.Celsius = 4f * i;
Console.WriteLine(temperature);
}
}
}
这里的关键是重写系统用来将对象转换为字符串值的ToString()
函数。它由 Console.WriteLine()
函数自动调用,重点是所有格式设置都可以在类内部处理。
关于c# - 循环输出的居中文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73860432/