如何删除不会影响数值的零
float X1 = (-b + sqrt(pow(b,2) - (4*a*c)))/(2*a);
有时如果X1是没有小数的数字,它将是X1=4.0000
我怎么能避免那个
{编辑}
答案 0 :(得分:2)
使用printf
的%g
除非请求替代表示,否则尾随零 删除,如果没有小数,也删除小数点字符 部分遗留下来。
代码示例:
double x = 4.0;
printf("DEBUG:%f\n", x);
printf("X1=%g\n", x);
输出:
DEBUG:4.000000
X1=4
将其输出为字符串并进行处理。
代码示例:
double x = 4.0;
char buff[48];
int len;
len = snprintf(buff, sizeof buff, "%.4f", x);
printf("DEBUG:%s\n", buff);
char *p = buff + len -1;
while(*p == '0'){
*p-- = 0;
}
if(*p == '.')
*p = 0;
printf("X1=%s\n", buff);
输出:
DEBUG:4.0000
X1=4