在这种情况下WriteLN做什么?

时间:2014-09-22 11:14:45

标签: pascal

我只是想知道pascal程序中的以下命令是做什么的:

WRITELN(MaxTab[index,1]:7:5,'          ',
        MaxTab[index,2]:8:3,'          ',
        MaxTab[index,3]:5:1);

MaxTab定义为ARRAY[1..200,1..3] OF REAL,索引是计数器。通常WRITELN只打印用括号或变量写的文字,但我不明白]背后的数字是什么(例如]:7:5)。

2 个答案:

答案 0 :(得分:3)

这是一个类似于C语言的sprintf("%07.5f")的Pascal结构。来自FreePascal documentation

  

对于实数值,您可以使用上述语法在指定的字段宽度中显示科学记数法,或者您可以转换为固定的小数点表示法:

Value : field_width : decimal_field_width
     

字段宽度是总字段宽度,包括小数部分。整个数字部分始终完全显示,因此如果您没有分配足够的空间,它仍会显示。

     

但是,如果小数位数超过指定的十进制字段宽度,则输出将四舍五入显示到指定的位数(尽管变量本身不会更改)。

write (573549.56792:20:2);
     

看起来像(前面有11个空格):

           573549.57

答案 1 :(得分:2)

第一个冒号后面的值以字符形式确定字段的宽度,第二个值确定小数点后面显示的位数。