菜鸟的C#学习(四)

文章目录

  • 一、格式说明符
    • 1.1、数字格式说明符(适用于数值类型:int, double, decimal 等)
      • 1. 标准数字格式
      • 2. 自定义数字格式
    • 1.2、日期时间格式说明符(适用于 DateTime, DateTimeOffset)
      • 1. 标准日期时间格式
      • 2. 自定义日期时间格式
    • 1.3、枚举格式说明符(适用于 enum 类型)
    • 1.4、组合格式示例
  • 二、
  • 三、
  • 四、

一、格式说明符

C# 中的格式说明符用于格式化各种数据类型的字符串表示,主要分为以下几类,按数据类型分类列举并提供组合示例:

1.1、数字格式说明符(适用于数值类型:int, double, decimal 等)

1. 标准数字格式

  • C/c:货币格式(自动添加货币符号,受当前文化影响)

    Console.WriteLine($"{1234.56:C}");  // ¥1,234.56(中文环境)
    
  • D/d:十进制整数格式(指定位数时不足补0)

    Console.WriteLine($"{123:D5}");     // 00123(固定5位)
    
  • E/e:科学计数法(E为大写,e为小写)

    Console.WriteLine($"{1234.56:E3}"); // 1.235E+003(保留3位小数)
    
  • F/f:固定小数位格式

    Console.WriteLine($"{1234.567:F2}"); // 1234.57(保留2位小数)
    
  • G/g:通用格式(自动选择最简洁的表示)

    Console.WriteLine($"{1234.567:G4}"); // 1235(总位数4位,四舍五入)
    
  • N/n:带千分位分隔符的数字

    Console.WriteLine($"{1234567:N2}"); // 1,234,567.00
    
  • P/p:百分比格式(数值乘以100并加%)

    Console.WriteLine($"{0.123:P1}");   // 12.3%(保留1位小数)
    
  • X/x:十六进制格式(X大写,x小写)

    Console.WriteLine($"{255:X2}");     // FF(2位大写)
    Console.WriteLine($"{255:x4}");     // 00ff(4位小写)
    

2. 自定义数字格式

  • 0:占位符(位数不足补0,超出则原样显示)
  • #:占位符(位数不足不补0,超出则原样显示)
  • .:小数点
  • ,:千分位分隔符(可重复表示比例缩放,如 ,, 表示除以100万)
  • %:百分比(数值乘以100)
  • \:转义字符(显示特殊符号)

示例

// 整数部分至少3位,小数部分固定2位
Console.WriteLine($"{12.3:000.00}");   // 012.30// 整数部分可选,小数部分最多2位(不补0)
Console.WriteLine($"{1234.567:###.##}"); // 1234.57// 千分位分隔+比例缩放(除以1000,显示为"千")
Console.WriteLine($"{1234567:###,}k");   // 1235k(四舍五入到千位)// 混合百分比和自定义格式
Console.WriteLine($"{0.1234:00.0%}");    // 12.3%

1.2、日期时间格式说明符(适用于 DateTime, DateTimeOffset)

1. 标准日期时间格式

  • d:短日期(如 2023/10/05
  • D:长日期(如 2023年10月5日
  • t:短时间(如 14:30
  • T:长时间(如 14:30:45
  • f:完整日期+短时间(如 2023年10月5日 14:30
  • F:完整日期+长时间(如 2023年10月5日 14:30:45
  • g:常规日期+短时间(如 2023/10/05 14:30
  • G:常规日期+长时间(如 2023/10/05 14:30:45
  • s:可排序日期时间(如 2023-10-05T14:30:45,ISO 8601)
  • u:UTC可排序时间(如 2023-10-05 14:30:45Z

示例

DateTime dt = new DateTime(2023, 10, 5, 14, 30, 45);
Console.WriteLine($"{dt:d}"); // 10/5/2023
Console.WriteLine($"{dt:G}"); // 10/5/2023 14:30:45

2. 自定义日期时间格式

  • y/yy/yyy/yyyy:年(如 23/2023
  • M/MM:月(1-12/01-12
  • d/dd:日(1-31/01-31
  • h/hh:12小时制时(1-12/01-12
  • H/HH:24小时制时(0-23/00-23
  • m/mm:分(0-59/00-59
  • s/ss:秒(0-59/00-59
  • f/ff/fff:毫秒(1位/2位/3位)
  • t:上午/下午(A/P
  • z/zz/zzz:时区偏移(如 +08/+08:00

示例

DateTime dt = new DateTime(2023, 10, 5, 14, 30, 45, 123);
// 格式:年-月-日 时:分:秒.毫秒 时区
Console.WriteLine($"{dt:yyyy-MM-dd HH:mm:ss.fff zzz}"); 
// 输出:2023-10-05 14:30:45.123 +08:00

1.3、枚举格式说明符(适用于 enum 类型)

  • G/g:默认(显示枚举名, Flags 组合时用逗号分隔)
  • F/f:Flags 组合时强制显示所有名称(即使未标记 Flags)
  • D/d:显示枚举的基础数值
  • X/x:显示基础数值的十六进制形式

示例

[Flags]
enum MyEnum { A = 1, B = 2, C = 4 }
MyEnum val = MyEnum.A | MyEnum.C;Console.WriteLine($"{val:G}"); // A, C(名称组合)
Console.WriteLine($"{val:D}"); // 5(基础数值)
Console.WriteLine($"{val:X}"); // 00000005(十六进制)

1.4、组合格式示例

  1. 数字+日期组合
var data = new { Amount = 1234.56, Date = new DateTime(2023, 10, 5) };
Console.WriteLine($"{data.Date:yyyy-MM-dd} 交易金额:{data.Amount:C2}");
// 输出:2023-10-05 交易金额:¥1,234.56
  1. 自定义数字+转义字符
double ratio = 0.7532;
Console.WriteLine($"完成率:{ratio:00.00%}{ratio:0.##})");
// 输出:完成率:75.32%(0.75)
  1. 时间+毫秒精度
DateTime dt = DateTime.Now;
Console.WriteLine($"当前时间:{dt:HH:mm:ss.fff}");
// 输出:当前时间:15:42:36.789

说明

  • 格式说明符区分大小写(如 Xx 分别对应大小写十六进制)。
  • 可通过 IFormatProvider 自定义文化(如指定 CultureInfo.InvariantCulture 避免地区差异)。
  • 组合使用时,多个格式说明符需按类型规则拆分(如数字和日期需分别指定格式)。

二、

三、

四、

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/90970.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/90970.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于黑马教程——微服务架构解析(二)

本篇文章基于黑马程序员的微服务课程内容,结合个人学习过程中的理解与思考进行整理。本节将围绕以下几个问题展开:什么是网关和配置管理前面那篇文章,我们了解如何把一个单体的项目拆成分布式微服务项目,并且讲解一下各个服务之间…

Text2SQL智能问答系统开发(一)

开发一个面向企业的chatBI工作流 已完成 基础 Text2SQL 功能实现 实现用户输入自然语言问题后,系统能够自动生成 SQL 并执行返回结果。用户交互优化 支持用户通过补充信息对查询进行调整,提升易用性。模糊时间处理机制 对“最近”“近期”等模糊时间关…

Python HTML模块详解:从基础到实战

一、模块体系全景图 Python生态中处理HTML的工具可分为三大层级: 标准库基础层:html模块 html.parser第三方增强层:BeautifulSoup(搭配解析器)专业级工具层:lxml requests-html 二、标准库核心模块详解…

PyTorch常用Tensor形状变换函数详解

PyTorch常用Tensor形状变换函数详解 在PyTorch中,对张量(Tensor)进行形状变换是深度学习模型构建中不可或缺的一环。无论是为了匹配网络层的输入要求,还是为了进行数据预处理和维度调整,都需要灵活运用各种形状变换函数…

自主智能Agent如何重塑工作流自动化:技术、经济与未来展望

自主智能Agent的崛起与工作流自动化的范式革命2025年7月,当OpenAI向付费用户推出具备网页浏览和代码执行能力的ChatGPT Agent时,工作流自动化领域迎来了一场静默但彻底的革命。这款不再满足于简单问答的智能体,在一个安全的虚拟计算机环境中运…

技术架构、行业应用、工具链整合、挑战应对及未来趋势五大模块,引用多个权威来源数据与开源项目实现细节。

以下是一份关于AI技术落地的实战经验总结报告,结合代码示例、可视化图表与行业案例,内容分为技术架构、行业应用、工具链整合、挑战应对及未来趋势五大模块,引用多个权威来源数据与开源项目实现细节。AI技术落地实战指南:从架构设…

第 9 篇:神经网络初探——当AI拥有了“大脑”,世界从此不同

《人工智能AI之机器学习基石》系列⑨ 专栏核心理念: 用通俗语言讲清楚机器学习的核心原理,强调“洞察 + 技术理解 + 应用连接”,构建一个完整的、富有启发性的知识体系。

音频焦点 Android Audio Focus 进阶

旧焦点处理 示例调用链: requestAudioFocus() → propagateFocusLossFromGain_syncAf() → handleFocusLossFromGain()。 系统事件(如来电)→ 强制焦点变化 → handleFocusLossFromGain()。 函数 propagateFocusLossFromGain_syncAf 焦点持有者发生的焦点丢失通知 主要功能…

MFC UI对话框

文章目录对话框模态对话框创建销毁关闭CDialog::OnCancel()EndDialog()CDialog::DestroyWindow()非模态对话框创建销毁关闭delete this对话框 模态对话框 ​​阻塞父窗口​​,强制用户先处理对话框。关闭前父窗口无法响应事件。 创建 推荐:非指针方式…

RabbitMQ--@RabbitListener及@RabbitHandle

两者区别 在 Spring AMQP 中,RabbitListener 和 RabbitHandler 是处理 RabbitMQ 消息的核心注解,但职责和使用场景完全不同。以下从 定义、区别、场景、示例 逐层解析:一、核心定义1. RabbitListener作用:标记 方法或类 为 Ra…

【基于CKF的IMM】MATLAB例程,CV和CT两个模型下的IMM,二维,滤波使用CKF(容积卡尔曼滤波),附下载链接

本程序实现了基于交互多模型(IMM)容积卡尔曼滤波(CKF)的多模型融合定位方法,并与纯CV−CKFCV-CKFCV−CKF(匀速模型)和CT−CKFCT-CKFCT−CKF(匀角速度转弯模型)方法对比。…

AI资讯日报 - 2025年07月28日

AI资讯日报 | 2025年07月28日 周一 今日核心要点 精华提炼 技术突破 • 腾讯混元:开源发布、3D技术 • 书生Intern:开源发布、多模态 企业动态 • AI工具集:协同创作、视频生成 数据概览分类数量重点关注技术突破2 条开源发布、3D技术企业动态…

大语言模型 LLM 通过 Excel 知识库 增强日志分析,根因分析能力的技术方案(1):总体介绍

文章大纲 1. 核心目标 2. 系统总体架构 3. Google Cloud 端到端方案(含无 RAG & RAG 双模式) 3.1 无 RAG:Function-Calling 查表模式 3.2 RAG:托管式向量检索 4. 开源轻量级方案 5. 数字孪生联合验证(实验性) 6. 知识图谱增强(Neo4j) 7. 监控与持续优化(CometLLM)…

Deepseek + browser-use 轻松实现浏览器自动化

在数字化时代,浏览器应用广泛,浏览器自动化可大幅提升效率。Deepseek 是强大的智能语言模型,能精准解析复杂指令,browser - use 是专注浏览器操作的工具,提供丰富 API 接口,支持主流浏览器的各类自动化操作…

开疆智能ModbusTCP转Profient网关连接西门子PLC与川崎机器人配置案例

本案例是西门子PLC与川崎机器人通过Profient转ModbusTCP网关进行通讯转换的配置案例,西门子作为profinet主站,机器人作为ModbusTCP服务器。配置过程:机器人配置川崎机器人控制器提供了RS232、以太网的通信接口,同时也可通过加装选…

Docker多主机网络连接:实现跨主机通信

Docker 是一种流行的容器化平台,它可以帮助开发人员更方便地构建、发布和管理应用程序。在 Docker 中,容器是独立运行的应用程序包装,包含了运行所需的所有文件、库和环境变量。Docker 提供了多种网络连接方式,使得容器之间可以进…

OSPF笔记

一、OSPF基础1、技术背景(RIP中存在的问题)RIP中存在最大跳数为15的限制,不能适应大规模组网周期性发送全部路由信息,占用大量的带宽资源路由收敛速度慢以跳数作为度量值存在路由环路可能性每隔30秒更新2、OSPF协议特点没有跳数限…

kotlin基础【3】

Kotlin Playground: Edit, Run, Share Kotlin Code Online 资料&#xff1a;kotlin实战 第一章 data class Person(val name: String,val age:Int?null)//允许接受以age为空&#xff0c;当为空将它赋值为null,如果不这么写直接写age:Int?是否可以fun main(args:Array<St…

Java-数构二叉树

1.树 1.1概念 树是一种非线性的数据结构&#xff0c;它是由n个有限节点组成一个具有层次关系。这种结构有以下特点&#xff1a; 一个特殊的结点&#xff0c;称为根节点&#xff0c;根节点没有前驱节点除根节点以外&#xff0c;其余节点分成M个互不相交的集合。每个集合又是一…

编程中水合的理解

在编程中&#xff0c;水合&#xff08;Hydration&#xff09; 是一个常见概念&#xff0c;尤其在 前端开发 和 服务端渲染&#xff08;SSR&#xff09; 场景中频繁出现。它的核心含义是&#xff1a;将静态内容“激活”为交互式动态内容。1. 水合的本质简单理解&#xff1a;水合…