C语言使用printf输出击球率时如何去除末尾多余的零
问题解决方法
你遇到的问题是C语言printf函数默认的浮点数输出规则导致的:%f格式符默认会输出6位小数,因此0.350会被打印为0.350000,才会出现末尾多余的三个零。
你只需要调整printf的浮点数格式说明符,指定保留3位小数即可,同时可以统一调整列宽参数,不需要给不同玩家设置不同的缩进值,修改后的打印代码如下:
//print rows of statistics printf("%-13s%12.3f%6u%6u\n", player_1.player, player_1.bat_avg, player_1.hr, player_1.rbi); printf("%-13s%12.3f%6u%6u\n", player_2.player, player_2.bat_avg, player_2.hr, player_2.rbi); printf("%-13s%12.3f%6u%6u\n", player_3.player, player_3.bat_avg, player_3.hr, player_3.rbi);
格式说明符解释
%-13s:表示字符串左对齐,占13个字符宽度,刚好对应表头的「Player Name」列宽度%12.3f:表示浮点数右对齐,总宽度占12个字符,仅保留3位小数,刚好对应「Batting Avg.」列的宽度%6u:表示无符号整数右对齐,占6个字符宽度,对应表头的HR、RBI列宽度
修改后运行就能得到你期望的3位小数的击球率输出,且各列完全对齐。
内容的提问来源于stack exchange,提问作者pluxury
相关产品推荐
相关产品推荐

