C#中Double的字符串格式有哪些常用方法

来源:站长联盟作者:弥生美月头衔:网络博主
导读:本期聚焦于小伙伴创作的《C#中Double的字符串格式有哪些常用方法》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《C#中Double的字符串格式有哪些常用方法》有用,将其分享出去将是对创作者最好的鼓励。

在C#编程中,Double类型的数值经常需要转换为特定格式的字符串,比如保留固定小数位数、显示为百分比、添加千位分隔符等,这些需求都可以通过字符串格式化功能实现。不同的格式化方式对应不同的使用场景,掌握这些方法能让数值显示更符合业务要求。

C#中Double的字符串格式有哪些常用方法

标准数值格式字符串

标准数值格式字符串使用单个格式说明符来定义数值的通用格式,C#为Double类型提供了多种内置的标准格式,使用起来非常便捷。

常用标准格式说明符

  • C 或 c:货币格式,会根据当前系统的区域设置显示货币符号,默认保留两位小数
  • F 或 f:固定点格式,指定小数位数,默认保留两位
  • N 或 n:数字格式,会添加千位分隔符,默认保留两位小数
  • P 或 p:百分比格式,数值会乘以100并添加百分号,默认保留两位小数
  • E 或 e:科学计数法格式,可指定指数部分的位数
  • G 或 g:通用格式,会根据数值大小自动选择定点或科学计数法表示

标准格式使用示例

下面的代码展示了不同标准格式说明符的实际输出效果:

using System;

class Program
{
    static void Main()
    {
        double num = 1234.56789;
        
        // 货币格式
        Console.WriteLine("货币格式 C:" + num.ToString("C"));
        Console.WriteLine("货币格式 C3(保留3位小数):" + num.ToString("C3"));
        
        // 固定点格式
        Console.WriteLine("固定点格式 F:" + num.ToString("F"));
        Console.WriteLine("固定点格式 F1:" + num.ToString("F1"));
        
        // 数字格式(带千位分隔符)
        Console.WriteLine("数字格式 N:" + num.ToString("N"));
        Console.WriteLine("数字格式 N0(无小数):" + num.ToString("N0"));
        
        // 百分比格式
        Console.WriteLine("百分比格式 P:" + num.ToString("P"));
        Console.WriteLine("百分比格式 P1:" + num.ToString("P1"));
        
        // 科学计数法格式
        Console.WriteLine("科学计数法 E:" + num.ToString("E"));
        Console.WriteLine("科学计数法 E2:" + num.ToString("E2"));
        
        // 通用格式
        Console.WriteLine("通用格式 G:" + num.ToString("G"));
        Console.WriteLine("通用格式 G4:" + num.ToString("G4"));
    }
}

自定义数值格式字符串

如果标准格式无法满足需求,还可以使用自定义数值格式字符串,通过组合不同的格式说明符来定义个性化的显示规则。

常用自定义格式说明符

说明符作用示例输出结果
0零占位符,如果对应位置没有有效数字则显示01234.5.ToString("00000.00")01234.50
#数字占位符,对应位置没有有效数字则不显示1234.5.ToString("#####.##")1234.5
.小数点占位符,指定小数点的位置1234.567.ToString("0.00")1234.57
,千位分隔符,或者缩放数值(每出现一次缩小1000倍)12345.ToString("#,##0")12,345
%百分比占位符,数值会乘以100并添加%0.1234.ToString("0.00%")12.34%
;分段说明符,分别定义正数、负数、零的格式123.ToString("0.00;负0.00;零")123.00

自定义格式使用示例

下面的代码展示了自定义格式的常见用法:

using System;

class Program
{
    static void Main()
    {
        double num1 = 1234.5678;
        double num2 = -1234.5678;
        double num3 = 0;
        
        // 零占位符和数字占位符结合
        Console.WriteLine("自定义格式 0000.00:" + num1.ToString("0000.00"));
        Console.WriteLine("自定义格式 ####.##:" + num1.ToString("####.##"));
        
        // 千位分隔符
        Console.WriteLine("千位分隔符 #,##0.00:" + num1.ToString("#,##0.00"));
        
        // 缩放数值(每两个逗号缩小1000000倍)
        Console.WriteLine("缩放数值 0,,.00:" + num1.ToString("0,,.00"));
        
        // 百分比格式
        Console.WriteLine("自定义百分比 0.0%:" + (num1 / 100).ToString("0.0%"));
        
        // 分段格式(正数、负数、零分别定义)
        string format = "0.00;负0.00;零";
        Console.WriteLine("正数格式化:" + num1.ToString(format));
        Console.WriteLine("负数格式化:" + num2.ToString(format));
        Console.WriteLine("零格式化:" + num3.ToString(format));
    }
}

使用String.Format方法格式化

除了直接调用Double类型的ToString方法,还可以使用String.Format方法来实现Double的格式化,这种方式在需要拼接多个变量时更加方便。

示例代码如下:

using System;

class Program
{
    static void Main()
    {
        double price = 99.9;
        double count = 3;
        double total = price * count;
        
        // 使用String.Format拼接格式化后的字符串
        string result = String.Format("单价:{0:C2},数量:{1},总金额:{2:C2}", price, count, total);
        Console.WriteLine(result);
        
        // 也可以使用复合格式化字符串(C# 6.0及以上支持)
        string result2 = $"单价:{price:C2},数量:{count},总金额:{total:C2}";
        Console.WriteLine(result2);
    }
}

注意事项

  • 格式化操作不会改变Double本身的数值,只会生成对应的字符串表示
  • 标准格式说明符不区分大小写,但是自定义格式中的部分说明符大小写可能有不同含义,比如E和e表示科学计数法时指数的大小写不同
  • 如果指定的格式说明符无效,会抛出FormatException异常,使用时需要确保格式字符串正确
  • 不同区域设置下的货币符号、千位分隔符、小数点符号可能不同,默认会使用当前线程的区域设置,也可以通过传递IFormatProvider参数指定特定区域
在实际开发中,建议根据具体的显示需求选择合适的格式化方式,优先使用标准格式字符串处理通用场景,复杂场景再使用自定义格式字符串,这样能让代码更简洁易维护。

C#Double字符串格式ToStringString_format修改时间:2026-07-18 23:27:15

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。