C#编程(四十五)----------格式字符串
格式字符串
1.格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元)
案例:
string str=string.Format("{0:C}",0.2);
Console.WriteLine(str);
分析:中文操作系统的结果为:¥0.20 (英文操作系统结果:$0.20)
默认格式化小数点后面保留两位小数,如果需要保留一位或者更多,可以指定位数.
string str=string.Format("{0:C1}",23.15); //输出为:¥23.2(截去会自动四舍五入)
格式化多个object实例
string str=string.Format("市场价:{0:C},优惠价{1:C}", 23.15, 19.82);
Console.WriteLine(str);
2.格式化是进指定数字(格式化成固定的位数,位数不能少于未格式化,只支持整形)
案例:
string str = string.Format("{0:D3}",23);
Console.WriteLine(str);
//精度说明符指示结果字符串中所需的最少数字个数
string str = string.Format("{0:D2}",1234);
Console.WriteLine(str);
3.用分号隔开的数字,并指定小数点后的位数
案例:
//默认小数点后面两位
string str = string.Format("{0:N}",14200);
Console.WriteLine(str);
//自动四舍五入
string str = string.Format("{0:N3}",14200.2458);
4.格式化百分比
案例:
//默认保留百分的两位小数
string str = string.Format("{0:P}",0.24583);
//自动四舍五入
string str = string.Format("{0:P1}",0.24583);
Console.WriteLine(str);
5.零占位符和数字占位符
案例:
string str = string.Format("{0:0000.00}",12394.039);
Console.WriteLine(str);//输出12394.04
str = string.Format("{0:0000.00}", 194.039);
Console.WriteLine(str);//输出0194.04
str = string.Format("{0:###.##}", 12394.039);
Console.WriteLine(str);//输出12394.04
str = string.Format("{0:####.#}", 194.039);
Console.WriteLine(str);//输出194
零占位符:
如果格式化的值在格式字符串中出现”0”的位置有一个数字,则此数字被复制到结果字符串中.小数点前最左边的”0”的位置和小数点后最右边的”0”的位置确定总在结果字符串中出现的数字范围.
“00”说明符是的值被舍入到小数点前最近的数字,其中零位总被舍入.
数字占位符:
如果格式化的值在格式字符串中出现”#”的位置有一个数字,则此数字被复制到结果字符串中.否则,结果字符串中的此位置不存储任何值.
注意,如果”0”不是有效数字,此说明符永不显示”0”字符,及时”0”是字符串中位移的数字.如果”0”是所显示的数字中的有效数字,则显示”0”字符.
“##”格式字符串使得值被舍入到小数点前最近的数字,其中零总被舍去.
ps:空格占位符
string.Format("{0,-50}", theObj);//格式化成50个字符,原字符左对齐,不足则补空格
string.Format("{0,50}", theObj);//格式化成50个字符,原字符右对齐,不足则补空格
6.日期格式化
案例:
string str = "";
str = string.Format("{0:d}",System.DateTime.Now);
Console.WriteLine(str);
str = string.Format("{0:D}", System.DateTime.Now);
Console.WriteLine(str);
str = string.Format("{0:f}", System.DateTime.Now);
Console.WriteLine(str);
str = string.Format("{0:F}", System.DateTime.Now);
Console.WriteLine(str);
str = string.Format("{0:g}", System.DateTime.Now);
Console.WriteLine(str);
str = string.Format("{0:G}", System.DateTime.Now);
Console.WriteLine(str);
str = string.Format("{0:m}", System.DateTime.Now);
Console.WriteLine(str);
str = string.Format("{0:t}", System.DateTime.Now);
Console.WriteLine(str);
str = string.Format("{0:T}", System.DateTime.Now);
Console.WriteLine(str);
输出依次是:
2015/7/21
2015年7月21日
2015年7月21日 18:09
2015年7月21日 18:09:32
2015/7/21 18:09
2015/7/21 18:09:32
7月21日
18:09
18:09:32
总结一下各种格式标示符
|
字母 |
含义 |
|
C或c |
货币格式 |
|
D或d |
十进制格式(十进制整数,不要和decimal数据类型混淆) |
|
E或e |
指数格式 |
|
F或f |
固定精度格式 |
|
G或g |
常用格式 |
|
N或n |
用逗号分割千位的数字,比如1234会变成1.234 |
|
P或p |
百分符号格式 |
|
R或r |
圆整(只用与浮点数)保证一个数字被转换成字符串以后尅再被转回成同样的数字 |
|
X或x |
16进制格式 |
案例:
int i = 123456;
Console.WriteLine("{0:C}", i);//¥123,456.00
Console.WriteLine("{0:D}", i);//123456
Console.WriteLine("{0:E}", i);//1.234560E+005
Console.WriteLine("{0:F}", i);//123456.00
Console.WriteLine("{0:G}", i);//123456
Console.WriteLine("{0:N}", i);//123,456.00
Console.WriteLine("{0:P}", i);//12,345,600.00%
Console.WriteLine("{0:X}", i);//1E240
精度控制标识符控制了有效 数字的个数或者十进制小数的位数.
int i = 123456;
Console.WriteLine(" {0:C5}", i);//¥123,456.00
Console.WriteLine("{0:D5}", i);//123456
Console.WriteLine("{0:E5}", i);//1.23456E+005
Console.WriteLine("{0:F5}", i);//123456.00000
Console.WriteLine("{0:G5}", i);//1.23456E5
Console.WriteLine("{0:N5}", i);//123,456.00000
Console.WriteLine("{0:P5}", i);//12,345,600.00000%
Console.WriteLine("{0:X5}", i);//1E240
如果标准格式化标识符还不能满足你.可以使用图形化格式字符串来创建定制的字符串输出.图形化格式化使用占位符来表示最小位数,最大位数,定位符号,负号的外观以及其他数字符号的外观.下表:
|
符号 |
名称 |
含义 |
|
0 |
0占位符 |
用0填充不足的位数 |
|
# |
数字占位符 |
用#代替实际的位数 |
|
. |
十进制小数点 |
|
|
, |
千位分隔符 |
用逗号进行千位分隔,比如把1000分割成1,000 |
|
% |
百分号符 |
显示一个百分标识 |
|
E+0E-0e+0e-0 |
指数符号 |
用指数符号格式化输出 |
|
‘ABC’ ”ABC” |
常量字符串 |
显示单引号或者双引号里面的字符串 |
|
; |
区域分隔符 |
如果数字会被格式化成整数,负数,或者0,用;来进行分割 |
|
,. |
缩放符号 |
数字除以1000 |
案例:
double i = 123456.42;
Console.WriteLine();
Console.WriteLine("{0:000000.00}", i);//123456.42
Console.WriteLine("{0:00.00000000e+0}", i);//12.34564200e+4
Console.WriteLine("{0:0,.}", i);//123
Console.WriteLine("{0:#0.000}", i);//123456.420
Console.WriteLine("{0:#0.000;(#0.000)}", i);//123456.420
Console.WriteLine("{0:#0.000;(#0.000);<zero>}", i);//123456.420
Console.WriteLine("{0:#%}", i);//12345642%
i = -123456.42;
Console.WriteLine();
Console.WriteLine("{0:000000.00}", i);//-123456.42
Console.WriteLine("{0:00.00000000e+0}", i);//-12.34564200e+4
Console.WriteLine("{0:0,.}", i);//-123
Console.WriteLine("{0:#0.000}", i);//-123456.420
Console.WriteLine("{0:#0.000;(#0.000)}", i);//(123456.420)
Console.WriteLine("{0:#0;(#0);<zero>}", i);//(123456)
Console.WriteLine("{0:#%}", i);//-12345642%
i = 0;
Console.WriteLine();
Console.WriteLine("{0:0,.}", i);//0
Console.WriteLine("{0:#0}", i);//0
Console.WriteLine("{0:#0;(#0)}", i);//0
Console.WriteLine("{0:#0;(#0);<zero>}", i);//<zero>
Console.WriteLine("{0:#%}", i);//%
C#编程(四十五)----------格式字符串的更多相关文章
- NeHe OpenGL教程 第四十五课:顶点缓存
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- 孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备
孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天本来应当继续学习Python的数据库操作,但根据过去我自 ...
- (十四--十五)数据库查询优化Part I
(十四--十五)数据库查询优化Part I 如果理解的有问题.欢迎大家指出.这也是我在看课记得笔记..可能会有很多问题 查询优化的重要性 请记住用户只会告诉DMBS他们想要什么样的结果,而不会告诉他们 ...
- Gradle 1.12用户指南翻译——第四十五章. 应用程序插件
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- SQL注入之Sqli-labs系列第四十一关(基于堆叠注入的盲注)和四十二关四十三关四十四关四十五关
0x1普通测试方式 (1)输入and1=1和and1=2测试,返回错误,证明存在注入 (2)union select联合查询 (3)查询表名 (4)其他 payload: ,( ,( 0x2 堆叠注入 ...
- “全栈2019”Java第四十五章:super关键字
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 《手把手教你》系列技巧篇(四十五)-java+ selenium自动化测试-web页面定位toast-上篇(详解教程)
1.简介 在使用appium写app自动化的时候介绍toast的相关元素的定位,在Web UI测试过程中,也经常遇到一些toast,那么这个toast我们这边如何进行测试呢?今天宏哥就分两篇介绍一下. ...
- 第四十五个知识点:描述一些对抗RSA侧信道攻击的基础防御方法
第四十五个知识点:描述一些对抗RSA侧信道攻击的基础防御方法 原文地址:http://bristolcrypto.blogspot.com/2015/08/52-things-number-45-de ...
- 学习ASP.NET Core Razor 编程系列十五——文件上传功能(三)
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
随机推荐
- Coursera台大机器学习技法课程笔记15-Matrix Factorization
很多ML模型用的都是数值特征,那么对于分类特征,该怎么做呢? 以linear network为例:先对特征进行转换,转换成有意义的特征后,再对其进行线性组合 进一步,模型可表示为:使Ein最小,我们就 ...
- 网络协议之TLS
前言 由于在TCP.UDP等方式传输数据时,数据包有可能被其他人截获,并解析出信息,这就给信息安全带来了很大的挑战.最初的SSL协议被网景公司提出,它不会影响上层协议(如HTTP.电子邮件等),但可以 ...
- laravel5.3之后可以使用withCount()这个方法
比如:文章控制器ArticleController.php查询文章列表数据的时候用withCount连接Comment,Zan模型直接统计每篇文章的评论和点赞数量. 使用之前需要在文章模型文件Arti ...
- Linux学习笔记:sed删除、插入数据
一.sed删除文件第一行 sed -i '1d' file.txt -- 删除第一行 sed -i 'nd' file.txt -- 删除第n行 sed -i '$d' file.txt -- 删除最 ...
- LOJ 10127 -「一本通 4.3 练习 1」最大数
题面 题目描述 给定一个正整数数列 $a_1, a_2, a_3, \dots , a_n$,每一个数都在 0~p-1之间.可以对这列数进行两种操作: 添加操作:向序列后添加一个数,序列长度变成 n+ ...
- Selenium Books
Recently, some of my projects rely heavily upon tests with selenium. Some books about selenium are c ...
- .NetCore 使用 Linq 动态拼接Expression表达式条件来实现 对EF、EF Core 扩展查询排序操作
相信在使用EF的时候对查询条件或者排序上的处理令人心烦,下面我们就来动态拼接表达式解决这一问题 当我们在查询中使用Where的时候可以看到如下参数 下面我们就来扩展 Expression<Fun ...
- 【BZOJ】4380: [POI2015]Myjnie
题解 区间dp,先离散化所有价值 \(f[i][j][k]\)表示\([i,j]\)区间里最小值为\(k\)的价值最大是多少 只考虑\(i <= a <= b <= j\)的区间,枚 ...
- [NOIp2003提高组]神经网络
OJ题号:洛谷1038 思路:拓扑排序,注意细节.1.题目中求和运算$C_i=\displaystyle{\sum_{(j,i)\in E}W_{ji}C_j-U_i}$中$U_i$在求和运算外,只要 ...
- Nginx增加模块
http://blog.csdn.net/loyachen/article/details/50902667