使用sprintf格式化float失败

时间:2013-06-03 11:24:13

标签: c++ visual-studio-2008 printf

我正在尝试使用C ++中的sprintf创建一个格式化的字符串(实际上是一个char数组)。 输入变量是浮点值float fps,未指定的整数unsinged int timeStepCount和要写入char out[256]的缓冲区。 我打电话给sprintf如下:

sprintf(out, "%4.1f FPS %10d time steps", fps, timeStepCount);

timeStepCount格式正确(当数字短于十位时添加空格)但fps不是。它只能获得实际需要的数字。我忘记了什么吗? 我正在使用Visual Studio 2008,如果这有帮助:)

1 个答案:

答案 0 :(得分:2)

格式%4.1f使用至少四个字符的宽度表示“打印fps”,小数点后面有一位数。“

在小数点前,小数点后面至少有一位数,小数点后面至少有一位数,即所请求的四个char中至少有三位数。如果fps的值在0(包括)和10(不包括)之间,则会得到一个填充空间,否则没有。

如果你需要四个字符,包括小数点前的填充,你需要%6.1f,因为这两个地方用于点和后面的数字。