You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# .NET中.ToString("F")与.ToString("G")的区别及差异场景

C# .NET中ToString("F")与ToString("G")的区别及差异场景

核心区别

  • F(定点格式说明符):以固定小数位数的形式展示数值,默认保留2位小数,即使小数部分末尾为零也会保留。核心是强调固定的小数精度,不会省略末尾无意义的零。
  • G(常规格式说明符):以最简洁的可读形式展示数值,会自动省略小数部分末尾的零;当数值的小数部分全为零时,直接输出整数(不带小数点)。对于极小或极大的数值,它会自动切换为科学计数法保证可读性。

产生不同输出的场景

场景1:小数部分末尾存在无意义的零

当数值的小数部分末尾有零时,G会省略这些零,而F会完整保留:

decimal value = 16325.60m;
Console.WriteLine($"G: {value.ToString("G")}"); // 输出: G: 16325.6
Console.WriteLine($"F: {value.ToString("F")}"); // 输出: F: 16325.60

场景2:数值为整数(小数部分全为零)

对于没有小数部分的整数,G直接输出整数,F会默认补充两位小数:

decimal value = 16325m;
Console.WriteLine($"G: {value.ToString("G")}"); // 输出: G: 16325
Console.WriteLine($"F: {value.ToString("F")}"); // 输出: F: 16325.00

场景3:自定义精度参数时

两者的精度参数含义完全不同:

  • G的参数表示有效数字的总数
  • F的参数表示小数部分的位数
decimal value = 16325.628m;
Console.WriteLine($"G3: {value.ToString("G3")}"); // 输出: G3: 1.63E+04(保留3位有效数字)
Console.WriteLine($"F3: {value.ToString("F3")}"); // 输出: F3: 16325.628(保留3位小数)

场景4:极小或极大数值

当数值极小或极大时,G会自动切换为科学计数法,而F始终使用定点格式(可能会显示大量零或不够直观):

// 极小数值
decimal smallValue = 0.000016325m;
Console.WriteLine($"G: {smallValue.ToString("G")}"); // 输出: G: 1.6325E-05
Console.WriteLine($"F: {smallValue.ToString("F")}"); // 输出: F: 0.00

// 极大数值
decimal largeValue = 163256280000m;
Console.WriteLine($"G: {largeValue.ToString("G")}"); // 输出: G: 1.6325628E+11
Console.WriteLine($"F: {largeValue.ToString("F")}"); // 输出: F: 163256280000.00

内容的提问来源于stack exchange,提问作者Leventogenna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 00:00:04