格式字符串

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#编程(四十五)----------格式字符串的更多相关文章

  1. NeHe OpenGL教程 第四十五课:顶点缓存

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  2. 孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备

     孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天本来应当继续学习Python的数据库操作,但根据过去我自 ...

  3. (十四--十五)数据库查询优化Part I

    (十四--十五)数据库查询优化Part I 如果理解的有问题.欢迎大家指出.这也是我在看课记得笔记..可能会有很多问题 查询优化的重要性 请记住用户只会告诉DMBS他们想要什么样的结果,而不会告诉他们 ...

  4. Gradle 1.12用户指南翻译——第四十五章. 应用程序插件

    本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  5. SQL注入之Sqli-labs系列第四十一关(基于堆叠注入的盲注)和四十二关四十三关四十四关四十五关

    0x1普通测试方式 (1)输入and1=1和and1=2测试,返回错误,证明存在注入 (2)union select联合查询 (3)查询表名 (4)其他 payload: ,( ,( 0x2 堆叠注入 ...

  6. “全栈2019”Java第四十五章:super关键字

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  7. 《手把手教你》系列技巧篇(四十五)-java+ selenium自动化测试-web页面定位toast-上篇(详解教程)

    1.简介 在使用appium写app自动化的时候介绍toast的相关元素的定位,在Web UI测试过程中,也经常遇到一些toast,那么这个toast我们这边如何进行测试呢?今天宏哥就分两篇介绍一下. ...

  8. 第四十五个知识点:描述一些对抗RSA侧信道攻击的基础防御方法

    第四十五个知识点:描述一些对抗RSA侧信道攻击的基础防御方法 原文地址:http://bristolcrypto.blogspot.com/2015/08/52-things-number-45-de ...

  9. 学习ASP.NET Core Razor 编程系列十五——文件上传功能(三)

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

随机推荐

  1. Eureka的自我保护模式

    一 Eureka的自我保护模式 进入自我保护模式最直观的体现就是Eureka Server首页的警告,如下图: 默认情况下,如果Eureka Server在一定时间内没有接收到某个微服务实例的心跳,E ...

  2. XSS代码注入框架

    首先需要了解一下几点: 1.浏览器中Javascript变量的生命周期 Javascript变量的生命周期并不是你声明这个变量个窗口闭就被回收,只要有引用就会一直持续到浏览器关闭. 2.window对 ...

  3. laravel队列,事件简单使用方法

    A.队列的使用 1.队列配置文件存储在 config/queue.php 根据自己的情况进行配置 2..env文件 QUEUE_DRIVER=database(根据个人情况配置,redis等) 3.创 ...

  4. Faster R-CNN在GPU下的安装、测试经历

    在公司的服务器上安装faster rcnn时,遇到了不少问题: 1.cudnn版本不兼容的问题,解决办法参考: http://blog.csdn.net/WoPawn/article/details/ ...

  5. LeetCode(21):合并两个有序链表

    Easy! 题目描述: 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1- ...

  6. TinyHttpd代码解析

    十一假期,闲来无事.看了几个C语言开源代码.http://www.cnblogs.com/TinyHttpd 这里本来想解析一下TinyHttpd的代码,但是在网上一搜,发现前辈们已经做的很好了.这里 ...

  7. day10--协成\异步IO\缓存

       协成(Gevent) 协程,又称微线程,纤程.英文名Coroutine.一句话说明什么是线程:协程是一种用户态的轻量级线程.CPU只认识线程. 协程拥有自己的寄存器上下文和栈.协程调度切换时,将 ...

  8. video.js视频播放器

    免费视频播放器videojs中文教程 Video.js是一款web视频播放器,支持html5和flash两种播放方式.更多关于video.js的介绍,可以访问官方网站介绍,我之前也写过一篇关于vide ...

  9. 2018年东北农业大学春季校赛 C-wyh的商机

    一天,你们wyh学长和你们zhl学长玩一个游戏,这个游戏规则是这样的 给你n个城市,保证这n个城市之间都只有一条道路可以到达. 有一件物品,在所有城市中都是一样的,但是由于各个城市的经济发展不同,导致 ...

  10. UVALive - 6709

    二维线段树单点修改板子题 #include<bits/stdc++.h> #define LL long long #define fi first #define se second # ...