Golang字符串格式化出现意外空格问题排查
问题原因与解决方案
嘿,这个空格问题其实是fmt.Printf格式化符里的宽度设置导致的!
你用的%2.f中,2代表的是输出的最小宽度。当你的百分比计算结果是个位数(比如5)时,Go会自动在数字前面补一个空格来凑够2个字符的宽度,这就出现了你看到的( 5%)。
解决办法有两种,看你的需求选:
- 不需要固定宽度,只显示实际数字:把格式符里的
2去掉,改成%.f。这样不管数字是几位,都会直接输出,不会补空格。修改后的代码:fmt.Printf("Total Calories: %.f (%.f%%)\n", item.calorie.TotalCalories, item.calorie.TotalCalories/dailyCalorie*100) - 确定百分比是整数的话,用整数格式化:如果
item.calorie.TotalCalories/dailyCalorie*100的结果肯定是整数,直接用%d(整数格式化符)更合适,还能避免浮点数可能带来的精度问题。记得把计算结果转成int:fmt.Printf("Total Calories: %d (%d%%)\n", item.calorie.TotalCalories, int(item.calorie.TotalCalories/dailyCalorie*100))
这两种改法都能让你得到预期的Total Calories: 150 (5%)输出~
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

