nab*_*lke 25 c floating-point floating-point-conversion
以下测试代码会产生不需要的输出,即使我使用了宽度参数:
int main(int , char* [])
{
float test = 1234.5f;
float test2 = 14.5f;
printf("ABC %5.1f DEF\n", test);
printf("ABC %5.1f DEF\n", test2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
产量
ABC 1234.5 DEF
ABC 14.5 DEF
Run Code Online (Sandbox Code Playgroud)
如何实现这样的输出,使用哪种格式字符串?
ABC 1234.5 DEF
ABC 14.5 DEF
Run Code Online (Sandbox Code Playgroud)
NPE*_*NPE 44
以下内容应该正确排列所有内容:
printf("ABC %6.1f DEF\n", test);
printf("ABC %6.1f DEF\n", test2);
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我得到:
ABC 1234.5 DEF
ABC 14.5 DEF
Run Code Online (Sandbox Code Playgroud)
问题是,在%5.1f中,5是分配给整个数字的字符数,并且1234.5需要超过五个字符.这导致未对准14.5,其确实适合五个字符.
您正在尝试打印超过5个字符的内容,因此请将您的长度说明符放大:
printf("ABC %6.1f DEF\n", test);
printf("ABC %6.1f DEF\n", test2);
Run Code Online (Sandbox Code Playgroud)
第一个值不是"点之前的数字",而是"总长度".
| 归档时间: |
|
| 查看次数: |
29241 次 |
| 最近记录: |