-3 c floating-point
如何删除不会影响数值的零
float X1 = (-b + sqrt(pow(b,2) - (4*a*c)))/(2*a);
Run Code Online (Sandbox Code Playgroud)
有时如果 X1 是一个没有小数的数字,X1=4.0000
我将如何避免这种情况
{编辑}
使用%g的的printf
除非要求替代表示,否则尾随零将被删除,如果没有小数部分,小数点字符也会被删除。
代码示例:
double x = 4.0;
printf("DEBUG:%f\n", x);
printf("X1=%g\n", x);
Run Code Online (Sandbox Code Playgroud)
输出:
DEBUG:4.000000
X1=4
Run Code Online (Sandbox Code Playgroud)
将其输出为字符串并进行处理。
代码示例:
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);
Run Code Online (Sandbox Code Playgroud)
输出:
DEBUG:4.0000
X1=4
Run Code Online (Sandbox Code Playgroud)