格式化函数Format

delphi中formatFloat代码初探 由于项目需要,需要在qt下实现floatformat的函数。之前写过一个,但是写得不好。决定重新写一个,参考delphi xe2下的实现。把xe2下的相关代码都看了一遍,xe2的代码思路在这里贴出来。xe2下的代码在system.sysutils下,核心函数是InternalFloatToTextFmt。它有汇编的版本跟纯pacal的版本。汇编看不懂,参考的是纯pacal的版本。 整体流程是: 阅读详情

一。Format的用法

Format是一个很常用,却又似乎很烦的方法,本人试图对这个方法的帮助进行一些翻译
,让它有一个完整的概貌,以供大家查询之用:

首先看它的声明:
function Format(const Format: string; const Args: array of const): string; overload;
事实上Format方法有两个种形式,另外一种是三个参数的,主要区别在于它是线程安全的,
但并不多用,所以这里只对第一个介绍:

function Format(const Format: string; const Args: array of const): string; overload;
Format参数是一个格式字符串,用于格式化Args里面的值的。Args又是什么呢,
它是一个变体数组,即它里面可以有多个参数,而且每个参数可以不同。
如以下例子:
Format('my name is %6s',['wind']);
返回后就是
my name is wind

现在来看Format参数的详细情况:
Format里面可以写普通的字符串,比如'my name is'
但有些格式指令字符具有特殊意义,比如"%6s"

格式指令具有以下的形式:
"%" [index ":"] ["-"] [width] ["." prec] type
它是以"%"开始,而以type结束,type表示一个具体的类型。中间是用来
格式化type类型的指令字符,是可选的。

先来看看type,type可以是以下字符:
d 十制数,表示一个整型值
u 和d一样是整型值,但它是无符号的,而如果它对应的值是负的,则返回时
? 是一个2的32次方减去这个绝对值的数
? 如:Format('this is %u',[-2]);
? 返回的是:this is 4294967294
f 对应浮点数
e 科学表示法,对应整型数和浮点数,
? 比如Format('this is %e',[-2.22]);
? 返回的是:this is -2.22000000000000E+000
? 等一下再说明如果将数的精度缩小
g 这个只能对应浮点型,且它会将值中多余的数去掉
? 比如Format('this is %g',[02.200]);
? 返回的是:this is 2.2
n 只能对应浮点型,将值转化为号码的形式。看一个例子就明白了
? Format('this is %n',[4552.2176]);
? 返回的是this is 4,552.22
? 注意有两点,一是只表示到小数后两位,等一下说怎么消除这种情况
? 二是,即使小数没有被截断,它也不会也像整数部分一样有逗号来分开的
m 钱币类型,但关于货币类型有更好的格式化方法,这里只是简单的格式化
? 另外它只对应于浮点值
? Format('this is %m',[9552.21]);
?返回:this is ¥9,552.21
p 对应于指针类型,返回的值是指针的地址,以十六进制的形式来表示
? 例如:
? var X:integer;
??? p:^integer;
? begin
?? X:=99;
?? p:=@X;
?? Edit1.Text:=Format('this is %p',[p]);
? end;
? Edit1的内容是:this is 0012F548
s 对应字符串类型,不用多说了吧
x 必须是一个整形值,以十六进制的形式返回
? Edit1.Text:=Format('this is %X',[15]);
? 返回是:this is F

类型讲述完毕,下面介绍格式化Type的指令:
[index ":"] 这个要怎么表达呢,看一个例子
??????????? Format('this is %d %d',[12,13]);
??????????? 其中第一个%d的索引是0,第二个%d是1,所以字符显示的时候
??????????? 是这样 this is 12 13

??????????? 而如果你这样定义:
??????????? Format('this is %1:d %0:d',[12,13]);
??????????? 那么返回的字符串就变成了
??????????? this is 13 12
??????????? 现在明白了吗,[index ":"] 中的index指示Args中参数显示的
??????????? 顺序

??????????? 还有一种情况,如果这样Format('%d %d %d %0:d %d', [1, 2, 3, 4])
??????????? 将返回1 2 3 1 2。
??????????? 如果你想返回的是1 2 3 1 4,必须这样定:
??????????? Format('%d %d %d %0:d %3:d', [1, 2, 3, 4])
??????????? 但用的时候要注意,索引不能超出Args中的个数,不然会引起异常
??????????? 如Format('this is %2:d %0:d',[12,13]);
??????????? 由于Args中只有12 13 两个数,所以Index只能是0或1,这里为2就错了
[width] 指定将被格式化的值占的宽度,看一个例子就明白了
??????? Format('this is %4d',[12]);
??????? 输出是:this is?? 12
??????? 这个是比较容易,不过如果Width的值小于参数的长度,则没有效果。
??????? 如:Format('this is %1d',[12]);
??????? 输出是:this is 12
["-"]? 这个指定参数向左齐,和[width]合在一起最可以看到效果:
?????? Format('this is %-4d,yes',[12]);
?????? 输出是:this is 12?? ,yes
???????
["." prec] 指定精度,对于浮点数效果最佳:
?????????? Format('this is %.2f',['1.1234]);
?????????? 输出 this is 1.12
?????????? Format('this is %.7f',['1.1234]);
?????????? 输了 this is 1.1234000

?????????? 而对于整型数,如果prec比如整型的位数小,则没有效果
?????????? 反之比整形值的位数大,则会在整型值的前面以0补之
?????????? Format('this is %.7d',[1234]);
?????????? 输出是:this is 0001234]
?????????
?????????? 对于字符型,刚好和整型值相反,如果prec比字符串型的长度大
?????????? 则没有效果,反之比字符串型的长度小,则会截断尾部的字符
?????????? Format('this is %.2s',['1234']);
?????????? 输出是 this is 12
??????????
?????????? 而上面说的这个例子:
?????????? Format('this is %e',[-2.22]);
?????????? 返回的是:this is -2.22000000000000E+000
?????????? 怎么去掉多余的0呢,这个就行啦
?????????? Format('this is %.2e',[-2.22]);
??????????
好了,第一个总算讲完了,应该对他的应用很熟悉了吧

///////////////////////////////////////////////////////////////
二 FormatDateTime的用法
他的声明为:
function FormatDateTime(const Format: string; DateTime: TDateTime): string;
overload;
当然和Format一样还有一种,但这里只介绍常用的第一种
Format参数是一个格式化字符串。DateTime是时间类型。返回值是一种格式化后的
字符串

重点来看Format参数中的指令字符
c 以短时间格式显示时间,即全部是数字的表示
? FormatdateTime('c',now);
? 输出为:2004-8-7 9:55:40
d 对应于时间中的日期,日期是一位则显示一位,两位则显示两位
? FormatdateTime('d',now);
? 输出可能为1~31
dd 和d的意义一样,但它始终是以两位来显示的
? FormatdateTime('dd',now);
?? 输出可能为01~31
ddd 显示的是星期几
?? FormatdateTime('ddd',now);
?? 输出为: 星期六
dddd 和ddd显示的是一样的。
?? 但上面两个如果在其他国家可能不一样。
ddddd 以短时间格式显示年月日
??? FormatdateTime('ddddd',now);
??? 输出为:2004-8-7
dddddd 以长时间格式显示年月日
??? FormatdateTime('dddddd',now);
??? 输出为:2004年8月7日
e/ee/eee/eeee 以相应的位数显示年
???? FormatdateTime('ee',now);
??? 输出为:04? (表示04年)
m/mm/mmm/mmmm 表示月
???? FormatdateTime('m',now);
???? 输出为:8
???? FormatdateTime('mm',now);
???? 输出为? 08
???? FormatdateTime('mmm',now);
???? 输出为? 八月
???? FormatdateTime('mmmm',now);
???? 输出为? 八月
??? 和ddd/dddd 一样,在其他国家可能不同
yy/yyyy 表示年
???? FormatdateTime('yy',now);
???? 输出为 04
???? FormatdateTime('yyyy',now);
???? 输出为 2004
h/hh,n/nn,s/ss,z/zzz 分别表示小时,分,秒,毫秒
t? 以短时间格式显示时间
???? FormatdateTime('t',now);
??? 输出为 10:17
tt 以长时间格式显示时间
???? FormatdateTime('tt',now);
???? 输出为10:18:46
ampm 以长时间格式显示上午还是下午
???? FormatdateTime('ttampm',now);
???? 输出为:10:22:57上午

大概如此,如果要在Format中加普通的字符串,可以用双引号隔开那些
特定义的字符,这样普通字符串中如果含特殊的字符就不会被显示为
时间格式啦:
?FormatdateTime('"today is" c',now);
?输出为:today is 2004-8-7 10:26:58
时间中也可以加"-"或"/"来分开日期:
?FormatdateTime('"today is" yy-mm-dd',now);
?FormatdateTime('"today is" yy/mm/dd',now);
?输出为: today is 04-08-07
也可以用":"来分开时间?
?FormatdateTime('"today is" hh:nn:ss',now);
?输出为:today is 10:32:23

/////////////////////////////////////////////////////////////////
三.FormatFloat的用法

常用的声明:
function FormatFloat(const Format: string; Value: Extended): string; overload;
和上面一样Format参数为格式化指令字符,Value为Extended类型
为什么是这个类型,因为它是所有浮点值中表示范围最大的,如果传入该方法的参数
比如Double或者其他,则可以保存不会超出范围。

关键是看Format参数的用法
0? 这个指定相应的位数的指令。
?? 比如:FormatFloat('000.000',22.22);
?? 输出的就是022.220
?? 注意一点,如果整数部分的0的个数小于Value参数中整数的位数,则没有效果
?? 如:FormatFloat('0.00',22.22);
?? 输出的是:22.22
?? 但如果小数部分的0小于Value中小数的倍数,则会截去相应的小数和位数
?? 如:FormatFloat('0.0',22.22);
?? 输出的是:22.2
??
?? 也可以在整数0中指定逗号,这个整数位数必须大于3个,才会有逗号出句
?? FormatFloat('0,000.0',2222.22);
?? 输出是:2,222.2
?? 如果这样FormatFloat('000,0.0',2222.22);
?? 它的输出还是:2,222.2
?? 注意它的规律

#? 和0的用法一样,目前我还没有测出有什么不同。
?? FormatFloat('##.##',22.22);
?? 输出是:22.00

E? 科学表示法,看几个例子大概就明白了
?? FormatFloat('0.00E+00',2222.22);
?? 输出是 2.22E+03
?? FormatFloat('0000.00E+00',2222.22);
?? 输出是 2222.22E+00
??? FormatFloat('00.0E+0',2222.22);
?? 22.2E+2
?? 明白了吗,全靠E右边的0来支配的。
??
这个方法并不难,大概就是这样子了。

【Delphi 基础知识 26】FormatFloat的用法 Format参数为格式化指令字符,Value为Extended类型为什么是这个类型,因为它是所有浮点值中表示范围最大的,如果传入该方法的参数比如Double或者其他,则可以保存不会超出范围。注意一点,如果整数部分的0的个数小于Value参数中整数的位数,则没有效果。但如果小数部分的0小于Value中小数的倍数,则会截去相应的小数和位数。如:FormatFloat(‘0.00’,22.22);如:FormatFloat(‘0.0’,22.22);明白了吗,全靠E右边的0来支配的。输出的是:22.22。 阅读详情

相关推荐

WRF和WPS模型在Ubuntu系统上的安装与常见问题解决指南

本文详细介绍了在Ubuntu系统上安装WRF和WPS模型的完整教程,涵盖系统环境配置、依赖库安装、源代码编译以及常见问题的解决方案。重点解决了WPS编译中intmath.f文件的修改、环境变量设置和编译器兼容性等关键难点,帮助用户高效部署气象研究与预报模型。

weixin_29213525的博客 381

前端常用format

前端常用format

weixin_43517190的博客 603

ABB机器人C#二次开发实战:从通信打通到数据读写的落地指南(附完整工程)

最近在做自动化产线升级项目时,遇到一个核心需求:用C#上位机实时读取ABB机器人的关节角度、IO信号,同时下发运动指令和参数配置。翻遍全网,要么是Robot Studio的基础操作教程,要么是C++/VC++的老旧案例,C#相关的实操内容要么只给片段代码,要么跳过通信配置、权限设置等关键步骤,导致刚上手时踩了无数坑——连接超时、数据读不到、写入无响应,甚至误触发机器人安全保护。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1392

格式化函数的用法

一。Format的用法Format是一个很常用,却又似乎很烦的方法,本人试图对这个方法的帮助进行一些翻译,让它有一个完整的概貌,以供大家查询之用:首先看它的声明:function Format(const Format: string; const Args: array of const): string; overload;事实上Format方法有两个种形式,另外一种是三个参数的,主要

colin 3624

视觉检测在激光打码字符检测上的检测案例

在机器视觉检测技术中,OCR识别是比较典型的应用,应用的场景也比较丰富,基本上在制造业,每个工厂或者印刷厂都会用到视觉OCR识别检测,OCR字符识别的原理很简单,通过图像分割后,对字符进行学习、命名。在工业相机拍摄图像后,软件进行处理,从而读取结果。 随着技术的发展,激光打标技术被更多的应用在生产过程中,由激光打标代替油墨进行字符印刷,速度更快、效果更好。 但是随之而来的是在视觉检测上带来的影响,目前市面上应用的字符检测设备大多是由集成商单独开发的软件,在检测油墨印刷时,图像上的字符没有断点,非常连贯,所需

视觉检测设备-视觉检测系统-单张检测设备-卷料印品检测 1462

(头歌作业)—6.1 葡萄酒评论分析报告(project)

请读取文件中的数据,完成以下任务:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬。请读取文件中的数据,完成以下任务:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬。请读取文件中的数据,完成以下任务:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬。

2301_80677920的博客 1245

delphi里FormatFloat的用法

delphi里FormatFloat的用法FormatFloat的用法声明:function FormatFloat(const Format: string; Value: Extended):string; overload;和上面一样Format参数为格式化指令字符,Value为Extended类型为什么是这个类型,因为它是所有浮点值中表示范围最大的,如果传入该方法的参...

weixin_33874713的博客 363

UE5 蓝图节点图文大全(300+蓝图,9万字+)

本文采用虚幻5.2.1版本,以图文的方式对蓝图节点进行介绍,包括蓝图节点的输入输出参数解释,并有中英文节点名称可参考。

一碗清深的博客 2万+

Python print函数及format()格式化输出详解

今天继续给大家介绍Python相关知识,本文主要内容是Python print输出函数详解。 一、print()函数基本使用 二、字符串函数格式化输出 三、format()函数格式化输出

永远是少年 1万+

win10解决IE浏览器安装不上的问题(卸载依然显示不能安装)

目前win10 系统不支持外部ie安装程序,所以必须用win10自带的应用来安装 一、错误的卸载的方式 在控制面板的当前安装的程序界面是看不到ie的,需要选择控制面板左上角的启用或关闭windows功能 将ie11前面的勾勾去掉 这种方法是很多网站上的误区,其实这并没有卸载成功ie只是把ie的功能关闭了,但是他还在你的电脑上。你可以理解为我们说的对文件夹执行的隐藏文件夹功能。那个隐藏的文件夹依...

清平乐的技术专栏 3万+

【ELK】最新版ELK日志搜集,过滤与展示,手把手教你搭建企业级ELK日志平台

ELFK是一套完整的日志集中处理方案。 E:ElasticSearck ES 分布式索引型非关系数据库 存储logstash输出的日志 全文检索引擎,保存的格式是json格式 L:logstash 基于java语言开发的,数据收集引擎。日志的收集,可以对数据进行过滤,分析,汇总,以标准格式输出 K:Kiabana 是es的可视化工具。对es存储的数据进行可视化展示,分析和检索。 F: FileBeat是一个轻量级日志采集器,Filebeat属于Beats家族的6个成员之一。

景天科技苑 7万+

Python format 格式化函数

Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。 基本语法是通过 {} 和 : 来代替以前的 % 。 format 函数可以接受不限个参数,位置可以不按顺序。 实例 >>>"{} {}".format("hello", "world") # 不设置指定位置,按默认顺序 'hello world' >...

weixin_43409011的博客 261

65页PPT全面学习大型汽车集团企业IT信息化(管理架构、应用架构、技术架构)

订单到交付(OTD):借助ERP、MES、LES、SRM、QMS、APS等系统,实现财务与业务一体化、高级排产、生产过程自动化及供应链协同。- 数据标准化:数据标准化是企业信息化建设基石,包括制定统一业务解释和标准、维护管理流程、发布应用等,涉及数据统一定义、分类、编码等内容。- 大数据应用:汽车行业大数据应用涵盖生产、销售、售后等环节,如设备预见性保养、销量预测、质量预警等,提升企业运营效率和决策能力。- 策略明晰:明确C2M管理矩阵,包括供应商、采购、物流、制造、销售、财务等环节的策略。

cdfunlove的博客 1049

mysql中format()的用法以及其他常用的数字格式化函数

在MySQL中,FORMAT()函数用于格式化数字,使其具有固定的小数位数,并且可以根据需要包含千位分隔符。这对于将数字转换为更易读的格式非常有用,尤其是在报告和用户界面中显示财务数据时。语法功能FORMAT()示例这里,数字 1234.56789 被格式化为两位小数,并且包含千位分隔符。在这个例子中,格式化结果没有小数部分,四舍五入到最接近的整数。负数也会被正确处理,包括负号和千位分隔符。这里,计算所有员工的平均薪资,并格式化为两位小数。注意事项FORMAT()DOUBLEFORMAT()

2301_81133727的博客 5609

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【在 VBA 中 Format 函数格式化规则】

VBA中的Format函数提供了全面的数据格式化功能,涵盖数值、日期、时间和文本。数值格式化支持占位符(0、#)、小数点、百分比、千分位和科学计数法;日期时间格式化可自定义年份、月份、日期和时间的显示方式;文本格式化包括大小写转换和占位符。此外,还支持条件格式、预定义常量及转义字符。使用时需注意区域设置影响、数值舍入和文本截断等细节。通过灵活组合这些规则,可以精确控制数据的显示格式。

qq_33764107的博客 1323

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Python字符串格式化,%和format函数

Python字符串格式化 格式化的操作有两种 一、使用%,常用的格式化 格式 描述 %s 字符串 %d 有符号整数(十进制) %f 浮点数 %O 转换为带符号的八进制形式的整数 %X 转换为带符号的十六进制形式的整数 %e 转换为科学计数法表示的浮点数(e小写) %c 格式化字符及其ASCII码 常用的示例 #字符串 print("学习是一件%s的事情"...

Selly166的博客 1万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Python format()函数高级字符串格式化详解

本篇文章用生动形象的话语和表格的形式来详细的讲解了Python中format函数高级字符串格式化的知识点

x15514104477的博客 4292

format函数python浮点数_Python通过format函数格式化显示值

英文文档:format(value[, format_spec])Convert a value to a “formatted” representation, as controlled by format_spec. The interpretation of format_spec will depend on the type of the value argument, however...

weixin_39714565的博客 1548

内置函数和format格式化函数

PY2102作业总结-获取python内置函数欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与...

赵个赵的博客 298

python的format函数使用、参数设置、数字格式化

文章目录format函数1.1 format函数的简单使用1.2 format函数的参数设置1.3 通过format函数的列表索引设置参数1.4 数字格式化 format函数 用于字符串的格式化,通过 {} 和 : 来代替以前的 % 1.1 format函数的简单使用 test="{} {}".format("hello", "world")

weixin_42515907的博客 6540

Python之format格式化函数以及数字格式化输出规范

format函数的应用场景,主要用于Python字符串的处理,以及计算机二级考试基础内容。

qq_61210648的博客 5815

python format函数 日期_js日期格式化format

日期格式化在JavaScript的开发中是十分常见的,日期格式化一般情况下是通过format函数来实现的,它可以用来格式化日期并转换的日期格式。本文向大家介绍JavaScript中日期格式化format实现原理及实例。1、format函数介绍:用来格式化日期,转换的日期格式。参数date:要格式化的时间对Date的扩展,将 Date 转化为指定格式的String。//月(M)、日(d)、小时(h...

weixin_42314648的博客 1653

python语言format用法_详解Python中的format格式化函数的使用方法

format函数实现字符串格式化的功能基本语法为:通过 : 和 {} 来控制字符串的操作一、对字符串进行操作1. 不设置指定位置,按默认顺序插入①当参数个数等于{}个数的时候str_1 = "小明{}小美,可是小美{}小明".format("喜欢", "不喜欢")print(str_1)运行结果:②当参数个数大于{}个数的时候str_1 = "小明{}小美,可是小美{}小明".format("喜欢...

weixin_39776298的博客 2830

Python——format格式化函数

Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。 基本语法是通过 {} 和 : 来代替以前的 % 。 format 函数可以接受不限个参数,位置可以不按顺序。 >>>"{} {}".format("hello", "world") # 不设置指定位置,按默认顺序 'hello world' >>> "{0} {1}".format("hello", "world") # 设置指定位置 'hello

Fo*(Bi)的博客 2131

Python字符串的format格式化函数总结

string类型的format函数 相比于常规的%进行格式化输出,python的字符串内置函数format更方便格式化功能。以下为format函数的一些总结。 format函数: 一般采用,“字符串内容{}”.format(格式化内容)的形式进行。其中注意以下几点。 1.format函数进行格式化输出,可以不指定位置,也可以指定位置。如 "{}是{}".format("我","你") #若不指...

uGamemaster的博客 549
上一篇: 加密方法
xxxxxxxxx
博客等级 码龄26年 3粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值