常用的声明:
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来支配的。
var s: string; begin //FormatFloat 的参数1是 String 格式指令, 参数2是实数类型 Extended
s := FormatFloat('###.###',12.3456); //返回: 12.346
s := FormatFloat('000.000',12.3456); //返回: 012.346
s := FormatFloat('#.###',12.3); //返回: 12.3
s := FormatFloat('0.000',12.3); //返回: 12.300
s := FormatFloat('#,#.#',1234567); //返回: 1,234,567
s := FormatFloat('0,0.0',1234567); //返回: 1,234,567.0
s := FormatFloat('0.00E+0',1234567); //返回: 1.23E+6
s := FormatFloat('0.00E+00',1234567); //返回: 1.23E+06 // 在科学计数法中使用 # 好像不合适?
在delphi中格式化数字但在Excel中未显示出来,则在其前面加四个单引号'''',在delphi中被编译时就是一个双引号", eclApp.worksheets[1].Cells[19*n+i,7].Value:='''' + FormatFloat('#,##0.0000',CDS_EnterMaterial.fieldbyname('UNITPRICE').AsFloat);