我正在尝试使用该printf
函数来给出我只能使用的float变量的值%d
,这是我到目前为止所做的:
.............................
float var =0.0;
// the value will set from another function
var *= 100000;
printf("X[%d.%04d] \n",(int)(var / 100000),((int)var)%100000));
...............
这对于浮点数为正值可以正常工作,但是当我得到负数时,它将如何显示:
赞成:-0.4578 -> 0.-4578
您可以说标志不在正确的位置,我的问题是是否有一种方法可以不使用例如:switch case
statemente或类似的东西?提前致谢 !
您可以通过对正负数字使用不同的格式字符串来做到这一点:
char *format;
int v = var * 100000;
if (v < 0) {
format = "X[-%d.%04d] \n";
v = -v;
} else {
format = "X[%d.%04d] \n";
}
printf(format, v/100000, v%100000);
这种方法v
在中始终是正号printf
,并且符号会嵌入到您传递的格式字符串中。仅使用%d
格式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句