C# 数字转字符串
//--------------忙忙碌碌,从代码的搬运工做起--------------//
有时候,我们在使用TextBox显示参数数值时,如果直接转换成字符串输出,往往显示的格式不尽如意,为了能够转换成我们想要的格式输出,我们就需要用到格式化字符串。
如果想要控制数字转字符串的显示精度,可以参考如下:
double i = 123456.78901;
//设置精度为3
string.Format("{0:F3}", i);
string.Format(("{0:0.000}", i);
string.Format(("{0:#.###}", i);//当实际数字小数点后数字小于3个时,只显示实际个数,不会补零
更多细节如下:
格式化字符串:
格式化的格式
string.Format("{ N [, M ][: formatString ]}", arg0, ... argN),在这个格式中:
- N是从0开始的整数,表示arg0-argN的索引
- M是可选的整数,表示格式化后的参数所占的宽度,如果M是负数,那么格式化后的值就是左对齐的,如果M是正数,那么格式化后的值是右对齐的
- formatString是可选的参数,表示格式代码
- argN表示要格式化的值,和N是对应的。
最简单的格式即string.Format("{0}",arg0)。
格式化标志符
字母 | 含义 |
C或c | Currency 货币格式 |
D或d | Decimal 十进制格式 |
E或e | Exponent 指数格式 |
F或f | Fixed point 固定精度格式 |
G或g | General 常用格式 |
N或n | 用逗号分割千位的数字,比如1234将会被变成1,234 |
P或p | Percentage 百分符号格式 |
R或r | Round-trip 圆整(只用于浮点数)保证一个数字被转化成字符串以后可以再被转回成同样的数字 |
X或x | Hex 16进制格式 |
类似string.Format("{0:C2}",arg0),其中,C是格式化标志符,2是精度,精度默认是2,因此也可写成string.Format("{0:C}",arg0)。
示例代码:
double i = 123456.78; Console.WriteLine("{0:C}", i);//¥123,456.78,货币(如需转换美元,详见下方) Console.WriteLine("{0:C3}", i);//¥123,456.780,精度3,不足补零 Console.WriteLine("{0:D}", 0x123456);//1193046,十进制整数,可用于进制转换(使用小数会报错) Console.WriteLine("{0:D10}", 0x123456);//0001193046,个数10,不足补零 Console.WriteLine("{0:E}", i);//1.234568E+005,科学技术法 Console.WriteLine("{0:E10}", i);//1.2345678000E+005 Console.WriteLine("{0:F}", i);//123456.78,固定精度,默认精度为2 Console.WriteLine("{0:F5}", i);//123456.78000 Console.WriteLine("{0:G}", i);//123456.78,常用格式,G后面带数字是指保留数字个数,默认全部显示 Console.WriteLine("{0:G5}", i);//1.2346E+05,设置个数小于实际个数时以科学计数法显示,保留5个数字 Console.WriteLine("{0:G6}", i);//123457,保留6个数字 Console.WriteLine("{0:G10}", i);//123456.78,设置个数大于实际个数时,保持实际个数,保留8个数字 Console.WriteLine("{0:N}", i);//123,456.78,千位分割 Console.WriteLine("{0:N10}", i);//123,456.7800000000 Console.WriteLine("{0:P}", i);//12,345,678.00%,百分数,默认精度为2 Console.WriteLine("{0:P10}", i);//12,345,678.0000000000% Console.WriteLine("{0:X}", 123456);//1E240,十六进制整数,可用于进制转换(使用小数会报错) Console.WriteLine("{0:X10}", 123456);//000001E240,个数10,不足补零 Console.WriteLine("{0:R}", i);//123456.78,保留17位有效数字 Console.WriteLine("{0:R}", 0.00001234567890123456789012345);//1.2345678901234568E-05 Console.WriteLine("{0:R}", 0.0001234567890123456789012345);//0.00012345678901234567 Console.WriteLine("{0:R}", 0.1234567890123456789012345);//0.12345678901234568 Console.WriteLine("{0:R}", 1.234567890123456789012345);//1.2345678901234567 Console.WriteLine("{0:R}", 3.4567890123456789012345);//3.4567890123456788 //补充 Console.WriteLine(i.ToString("C", new System.Globalization.CultureInfo("en-US")));//$123,456.78,美元
图形化格式字符串
符号 | 名称 | 含义 |
0 | 0占位符 | 用0填充不足的位数 |
# | 数字占位符 | 用#代替实际的位数 |
. | 十进制小数点 | |
, | 千位分隔符 | 用逗号进行千位分割,比如把1000分割成1,000 |
% | 百分符号 | 显示一个百分标识 |
E+0 E-0 e+0 e-0 |
指数符号 | 用指数符号格式化输出 |
\ | 专一字符 | 用于传统格式的格式化序列,比如"\n"(新行) |
'ABC' "ABC" |
常量字符串 | 显示单引号或者双引号里面的字符串 |
; | 区域分隔符 | 如果数字会被格式化成整数,负数,或者0,用;来进行分隔 |
,. | 缩放符号 | 数字除以1000 |
示例代码:
double i = 123456.78; Console.WriteLine("{0:0.000}", i);//123456.780,0占位符,不足补零 Console.WriteLine("{0:0000000.00}", i);//0123456.78 Console.WriteLine("{0:#.#}", i);//123456.8,#占位符 Console.WriteLine("{0:#.####}", i);//123456.78 Console.WriteLine("{0:0,0}", i);//123,457,千位分隔 Console.WriteLine("{0:0,0.0}", i);//123,456.8 Console.WriteLine("{0:,0.00}", i);//123456.78 Console.WriteLine("{0:#%}", i);//12345678%,百分比 Console.WriteLine("{0:#.#E+0}", i);//1.2E+5,科学计数法 Console.WriteLine("{0:#.#E-0}", i);//1.2E5 Console.WriteLine("{0:#.#E+0}", 0.000000123456789);//1.2E-7 Console.WriteLine("{0:#.#E-0}", 0.000000123456789);//1.2E-7 Console.WriteLine("{0:#.# 'Abc'}", i);//123456.8 Abc,添加字符串 Console.WriteLine("{0:#.#;#.##;<hello>}", i);//123456.8,分号区分正数、负数及零的不同格式化代码 Console.WriteLine("{0:#.#;#.##;<hello>}", -i);//123456.78 Console.WriteLine("{0:#.#;#.##;<hello>}", 0);//<hello> Console.WriteLine("{0:0,.}", i);//123,缩放1000 Console.WriteLine("{0:0,.000}", i);//123.457
参考flyingbread的《使用C#格式化字符串 ~》,详情请移步:https://www.cnblogs.com/zyh-nhy/archive/2007/10/11/921240.html
//--------------勤勤恳恳,做一只搬运知识的蚂蚁--------------//
本文来自博客园,作者:MaQaQ,转载请注明原文链接:https://www.cnblogs.com/magicMaQaQ/p/14981195.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?