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
相关产品推荐
相关产品推荐

