《C#零基础入门之百识百例》(五)输出格式控制 -- 竖式计算

本文是C#零基础入门系列,讲解如何进行格式化输出,包括格式字符串、标准和自定义数字格式说明符的应用,并通过实例展示了竖式计算的方法。
摘要由CSDN通过智能技术生成

前言

本文属于C#零基础入门之百识百例系列文章。此系列文章旨在为学习C#语言的童鞋提供一套系统的学习路径。此系列文章都会通过【知识点】【练习题】的形式呈现。有任何问题,你都可以通过评论私信等方式找到我,我会一对一解答你的问题。


系列文章目录: 导图
《C#零基础入门之百识百例》 目录文章传送门

上篇文中学习了输入输出,其中的Write方法和WriteLine方法有18中重载。

当方法不只一个参数时,第一个参数是一个可以定义个数的字符串,所以称之为格式字符串。

一,格式化输出

格式字符串可以代替标记:

  • 代替标记在格式字符串中标出的位置
  • 它由一个大括号和一个被括住整数的组成,其中整数是替换值的位置
  • 整数从0开始,依次替换替换值

语法如下:

Console.WriteLine("格式字符串{标记1},{标记2}...{标记n}", 值1, 值2, ... ,值n);

图示:

1.1 代码示例

// 输出等式
Console.WriteLine("1 + 1 = 2");
// 等价于
Console.WriteLine(1 + " + " + 1 + " = " + 2);
// 等价于
Console.WriteLine("{0} + {1} = {2}", 1, 1, 2);

输出结果:

1 + 1 = 2
1 + 1 = 2
1 + 1 = 2

1.2 相关拓展

  1. 在值替换标记时,值可以以任何顺序使用,值也可以多次使用。

示例:

Console.WriteLine("{0} + {1} = {0}", 1, 1);
  1. 若标记值超出实际值的长度,程序运行时会发生错误。

示例:

Console.WriteLine("{0} + {1} = {3}", 1, 1, 2);

在这里插入图片描述

  1. 控制数值位数

我们可以向占位符中添加格式字符串来控制数值的位数,其格式为{i, w},其中i是参数索引,w表示宽度值(数值位数),w为正数表示右对齐,w为负数表示左对齐

示例:

 Console.WriteLine("{0,1}+{1, 2}={2, 3}", 1, 1, 2);

 Console.WriteLine("{0,1}+{1, 2}={2, 3}", 11, 11, 22);

在这里插入图片描述
由上例可看出数值本身也是参与计算长度的。


二,格式说明符

C#中的占位符还有一种格式说明符的拓展,就是在宽度前加上特殊说明符,格式为{i, Xw},其中是参数索引,w表示宽度值,而X就是我们下面要说的格式说明符了…

2.1 标准数字格式说明符

格式字符串说明示例
C本地货币格式Console.WriteLine(“C, 精度3 ==> {0:C3}”, 3.1415926);
// C, 精度3 ==> $3.142
D十进制字符串格式,位数不足精度,前置0补足Console.WriteLine(“D, 精度3 ==> {0:D3}”, 10);
// D, 精度3 ==> 010
Console.WriteLine(“D, 精度3 ==> {0:D3}”, 1000);
// D, 精度3 ==> 1000
E科学计数法,默认为6位小数,可控制小数位数Console.WriteLine(“E, 精度3 ==> {0:E3}”, 3.1415926);
// E, 精度3 ==> 3.142E+000
F浮点数格式,可控制小数位数,可以为0Console.WriteLine(“F, 精度3 ==> {0:F3}”, 3.1415926);
// F, 精度3 ==> 3.142
G普通格式,使用E还是F格式取决于那种格式最简单Console.WriteLine(“E或F, 精度3 ==> {0:G3}”, 3.1415926);
// E或F, 精度3 ==> 3.14
N数字格式,用逗号表示千分符Console.WriteLine(“N, 精度3 ==> {0:N3}”, 3.1415926);
// N, 精度3 ==> 3.142
P百分数格式Console.WriteLine(“P, 精度3 ==> {0:P3}”, 3.1415926);
// P, 精度3 ==> 314.159%
X16进制格式Console.WriteLine(“X, 精度1 ==> {0:X1}”, 10);
// X, 精度1 ==> A
Console.WriteLine(“X, 精度4 ==> {0:X4}”, 10);
// X, 精度4 ==> 000A

表中示例代码:

Console.WriteLine("十进制字符串:D, 精度3 ==> {0:D3}", 10);
// 十进制字符串:D, 精度3 ==> 010
Console.WriteLine("十进制字符串:D, 精度3 ==> {0:D3}", 1000);
// 十进制字符串:D, 精度3 ==> 1000

Console.WriteLine("科学技术法:E, 精度3 ==> {0:E3}", 3.1415926);
// 科学技术法:E, 精度3 ==> 3.142E+000

Console.WriteLine("浮点数格式:F, 精度3 ==> {0:F3}", 3.1415926);
// 浮点数格式:F, 精度3 ==> 3.142

Console.WriteLine("普通格式E或F, 精度3 ==> {0:G3}", 3.1415926);
// 普通格式E或F, 精度3 ==> 3.14

Console.WriteLine("千分符格式:N, 精度3 ==> {0:N3}", 3.1415926);
// 千分符格式:N, 精度3 ==> 3.142

Console.WriteLine("百分数格式:P, 精度3 ==> {0:P3}", 3.1415926);
// 百分数格式:P, 精度3 ==> 314.159%

Console.WriteLine("十六进制格式:X, 精度1 ==> {0:X1}", 10);
// 十六进制格式:X, 精度1 ==> A
Console.WriteLine("十六进制格式:X, 精度4 ==> {0:X4}", 10);
// 十六进制格式:X, 精度4 ==> 000A

2.2 自定义数字格式说明符

格式字符串说明示例
00占位符,用对应的数字替换0。若不存在则显示0Console.WriteLine(“0占位符 ==> {0:0.0000}”, 3.14);
// 0占位符 ==> 3.1400
#数字占位符,用对应的数字替换#标记Console.WriteLine("#占位符 ==> {0:#.##}", 3.1415);
// #占位符 ==> 3.14
.小数点,确定小数点分隔符在字符串中的位置Console.WriteLine(".小数点 ==> {0:00.00}", 1.234);
// .小数点 ==> 01.23
% / ‰百/千分比占位符,将数字乘以100/1000,
并在结果字符串汇总插入本地化百/千分比符号
Console.WriteLine("%百分号 ==> {0:%0.00}", 0.314);
// % 百分号 ==> % 31.40
Console.WriteLine("‰千分号 ==> {0:0.000‰}", 0.314);
// ‰千分号 ==> 314.000‰
Console.WriteLine("0占位符 ==> {0:0.0000}", 3.14);
// 0占位符 ==> 3.1400

Console.WriteLine("#占位符 ==> {0:#.##}", 3.1415);
// #占位符 ==> 3.14

Console.WriteLine(".小数点 ==> {0:00.00}", 1.234);
// .小数点 ==> 01.23

Console.WriteLine("%百分号 ==> {0:%0.00}", 0.314);
// % 百分号 ==> % 31.40

Console.WriteLine("‰千分号 ==> {0:0.000‰}", 0.314);
// ‰千分号 ==> 314.000‰

实例练习 – 竖式计算

class Program
{
    static TaskCompletionSource<string> ts;

    static void Main(string[] args)
    {
        Console.WriteLine("----- 竖式计算 -----");

        int a = 10;
        int b = 20;
        Console.WriteLine("      " + a);
        Console.WriteLine("+     " + b);
        Console.WriteLine("----------");
        Console.WriteLine("      " + (a + b));

        Console.WriteLine();

        Console.WriteLine("{0,8}" , a);
        Console.WriteLine("+{0,7}" , b);
        Console.WriteLine("----------");
        Console.WriteLine("{0,8}" , (a + b));

        Console.WriteLine();

        Console.WriteLine("{0,8}\n+{1,7}\n----------\n{2,8}", a, b, a + b);

        Console.ReadLine();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈言必行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值