Format格式输出疑问(10分)

  • 主题发起人 主题发起人 mr.zy
  • 开始时间 开始时间
M

mr.zy

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var n : DOUBLE ;
begin
n:=12345678.99;
ShowMessage(Format('%*.*n',[10,2,n]));
end;
问题: '%*.*n'能帮我解释一下吗? 还有[]里10是长度,2是小数点位数对吗?
如果我想要 0.326 * 10 = 3.30 应该怎么办好呢? 四舍五入小数点后两位!
 
up
上面有千分位,如果不想要呢?
 
改用下面即可
n:=12345678.99;
ShowMessage(Format('%*.*f',[10,2,n]))
如果我想要 0.326 * 10 = 3.30可用
formatfloat('#.00',0.326*10);
 
曾经非常迷惑过这个问题,正好昨天找到有关说明,贴出来给有兴趣的朋友看看:

格式化字符串

使用加号(+)操作符和转换函数(如 IntToStr),你确实能把已有值组合成字符串,不
过另有一种方法能格式化数字、货币值和其他字符串,这就是功能强大的 Format 函数及
其一族。

Format 函数参数包括:一个基本文本字符串、一些占位符(通常由%符号标出)和一个数
值数组,数组中每个值对应一个占位符。例如,把两个数字格式化为字符串的代码如下:

Format ('First %d, Second %d', [n1, n2]);

其中 n1 和 n2 是两个整数值,第一个占位符由第一个值替代,第二个占位符由第二个值
替代,以此类推。如果占位符输出类型(由 % 符号后面的字母表示)与对应的参数类型
不匹配,将产生一个运行时间错误,因此设置编译时间类型检查会有利于 Format 函数的
使用。

除了 %d 外,Format 函数还定义了许多占位符,见表 7.1。这些占位符定义了相应数据
类型的默认输出,你可以用更深一层的格式化约束改变默认输出,例如一个宽度约束决定
了输出中的字符个数,而精度约束决定了小数点的位数。例如

Format ('%8d', [n1]);

该句把数字 n1 转换成有 8 个字符的字符串,并通过填充空白使文本右对齐,左对齐用
减号(-) 。

表 7.1: Format 函数的占位符

占位符
说 明

d (decimal)
将整型值转换为十进制数字字符串

x (hexadecimal)
将整型值转换为十六进制数字字符串

p (pointer)
将指针值转换为十六进制数字字符串

s (string)
拷贝字符串、字符、或字符指针值到一个输出字符串

e (exponential)
将浮点值转换为指数表示的字符串

f (floating point)
将浮点值转换为浮点表示的字符串

g (general)
使用浮点或指数将浮点值转换为最短的十进制字符串

n (number)
将浮点值转换为带千位分隔符的浮点值

m (money)
将浮点值转换为现金数量表示的字符串,转换结果取决于地域设置,详见Delphi帮助文件
的Currency and date/time formatting variables主题



领会以上内容最好的办法是你亲自进行字符串格式化试验。
 
接受答案了.
 
后退
顶部