数字格式化、占位符以及小数位数的设定

一、C# 内置类型的字母格式

字符串格式符号说明代码示例输出
C货币4.5.ToString(“C”)¥4.50
D十进制45.ToString(“D5”)00045
E科学计数法45000.ToString(“E”)4.500000E+005
F固定小数点位数45.ToString(“F3”)45.00
G常规4.5.ToString(“G”)4.5
N数值4500000.ToString(“N”)4,500,000.00
X16进制255.ToString(“X”)FF

参考链接:https://docs.microsoft.com/zh-cn/dotnet/standard/base-types/standard-numeric-format-strings

二、使用前导零(0)将整数填充到特定的长度
方法1: 使用ToString方法,10进制则使用ToString(“Dn”), 16进制则使用ToString(“Xn”),其中n代表字符串的最小长度。

 byte byteValue = 254;
 //10进制 填充总长度为5  00254
 byteValue.ToString("D5");
 //16进制  填充总长度为5  000FE
 byteValue.ToString("X5");

方法2:使用String.Format设置格式

格式说明符说明代码示例输出
“0”零占位符1234.5678(“00000”)01235
“#”数字占位符1234.5678("#####")1235
“.“””小数点0.45678(0.00)0.46
“,”组分割符和数字比例换算
“%”百分比占位符0.3697("##.0 %",en-US)37.0%

具体说明:
1、“0”自定义说明符: 长度不足的话,则用“0”补齐。

 double value;

 value = 123;
 Console.WriteLine(value.ToString("00000"));
 Console.WriteLine(String.Format("{0:00000}", value));
 // Displays 00123

 value = 1.2;
 Console.WriteLine(value.ToString("0.00", CultureInfo.InvariantCulture));
 Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                   "{0:0.00}", value));
 // Displays 1.20

 Console.WriteLine(value.ToString("00.00", CultureInfo.InvariantCulture));
 Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                 "{0:00.00}", value));
 // Displays 01.20

 CultureInfo daDK = CultureInfo.CreateSpecificCulture("da-DK");
 Console.WriteLine(value.ToString("00.00", daDK));
 Console.WriteLine(String.Format(daDK, "{0:00.00}", value));
 // Displays 01,20

 value = 1234567890;
 Console.WriteLine(value.ToString("0,0", CultureInfo.InvariantCulture));	
 Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                 "{0:0,0}", value));	
 // Displays 1,234,567,890

 value = 1234567890.123456;
 Console.WriteLine(value.ToString("0,0.0", CultureInfo.InvariantCulture));	
 Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                 "{0:0,0.0}", value));	
 // Displays 1,234,567,890.1


2、“#”自定义说明符:#号格式的位置有有效数字才会复制到字符串中
请注意,如果零不是有效数字,此说明符永不显示零,即使零是字符串中的唯一数字也是如此。 仅当零是所显示的数字中的有效数字时,才会显示零。

double value;

value = 1.2;
Console.WriteLine(value.ToString("#.##", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:#.##}", value));
// Displays 1.2

value = 123;
Console.WriteLine(value.ToString("#####"));
Console.WriteLine(String.Format("{0:#####}", value));
// Displays 123

value = 123456;
Console.WriteLine(value.ToString("[##-##-##]"));
Console.WriteLine(String.Format("{0:[##-##-##]}", value));
 // Displays [12-34-56]

value = 1234567890;
Console.WriteLine(value.ToString("#"));
Console.WriteLine(String.Format("{0:#}", value));
// Displays 1234567890

3、“.”自定义说明符:在结果字符串中插入本地化的小数分隔符。

double value;

value = 1.2;
Console.WriteLine(value.ToString("0.00", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:0.00}", value));
// Displays 1.20

Console.WriteLine(value.ToString("00.00", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
                                "{0:00.00}", value));
// Displays 01.20

参考链接:https://docs.microsoft.com/zh-cn/dotnet/standard/base-types/custom-numeric-format-strings#Specifier0

三、保留N位小数位数
1、使用 Math.Round() 方法

double double1_1 = Math.Round(1.545, 0);            //2.0

double double1_2 = Math.Round(1.545, 1);            //1.5

double double1_3 = Math.Round(1.545, 2);            //1.54

double double1_4 = Math.Round(1.5451, 2);           //1.55

double double1_5 = Math.Round(1.546, 2);            //1.55

2、使用 ToString() + NumberFormatInfo

NumberFormatInfo nfi3_1 = new NumberFormatInfo();
nfi3_1.NumberDecimalDigits = 0;
string str3_1 = 1.545d.ToString("N", 0);       //"2"

nfi3_1.NumberDecimalDigits = 1;
string str3_2 = 1.545d.ToString("N", nfi3_1);       //"1.5"

nfi3_1.NumberDecimalDigits = 2;
string str3_3 = 1.545d.ToString("N", nfi3_1);       //"1.55"

nfi3_1.NumberDecimalDigits = 2;
string str3_4 = 1.5451d.ToString("N", nfi3_1);      //"1.55"

nfi3_1.NumberDecimalDigits = 2;
string str3_5 = 1.546d.ToString("N", nfi3_1);       //"1.55"

3、使用 ToString() + 格式化字符

string str4_1_1 = 1.545d.ToString("N0");            //"2"

string str4_1_2 = 1.545d.ToString("N1");            //"1.5"

string str4_1_3 = 1.545d.ToString("N2");            //"1.55"

string str4_1_4 = 1.5451d.ToString("N2");           //"1.55"

string str4_1_5 = 1.546d.ToString("N2");            //"1.55"

//ToString() 的简单方法

string str4_2_6 = 1.545d.ToString("0");             //"2"

string str4_2_7 = 1.545d.ToString("0.0");           //"1.5"

string str4_2_8 = 1.545d.ToString("0.00");          //"1.55"

string str4_2_9 = 1.5451d.ToString("0.00");         //"1.55"

string str4_2_10 = 1.546d.ToString("0.00");         //"1.55"

4、使用 String.Format() 方法

string str5_1 = string.Format("{0:N0}", 1.545d);    //"2"

string str5_2 = string.Format("{0:N1}", 1.545d);    //"1.5"

string str5_3 = string.Format("{0:N2}", 1.545d);    //"1.55"

string str5_4 = string.Format("{0:N2}", 1.5451d);   //"1.55"

string str5_5 = string.Format("{0:N2}", 1.546d);    //"1.55"
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值