Base
printf("%d", 1.234);
printf("%f", 123);
都是“乱码”情况!!!
你把一个“int 丢进一个 %f的格式化输出里”,把一个“double 丢进 %d的格式化输出里”
这肯定是乱码的。
%d %f:就只单单做“格式化输出”的工作,不负责“类型转换”!!!
如果scanf / printf,还负责“类型强转”的工作,那么效率会大大降低。
所以,你自己要"确保“,类型是匹配的。
即printf("%d", X);
用%lf来输出double,会出错.... 用%f就没问题
输出-四舍五入
double f = 88.4 5 4 9 9 9 9;
"%.0f" -> / 88 “.0”的含义是: “只看”第.1位,如果他是>=5的,就进位;否则就不进位。
即,“只看第1位(4)”他是进不了位的(不看后面的549999)!!!
"%.1f" -> / 88.5 “.1”的含义是: “只看”第.2位,如果他是>=5的,就进位;否则就不进位。
即,“只看第2位(5)”他是可以进位的(不看后面的49999)!!!
"%.2f" -> / 88.45 “.2”的含义是: “只看”第.3位,如果他是>=5的,就进位;否则就不进位。
即,“只看第3位(4)”他是进不了位的(不看后面的9999)!!!
"%.3f" -> /