例如,我想在c中打印一个最多2位小数的值,而不是将其四舍五入.
喜欢:
a = 91.827345;
printf("%.2f", a);
Run Code Online (Sandbox Code Playgroud)
将打印91.83,但我希望输出91.82只是.怎么做?
执行此操作的唯一简单方法是使用snprintf打印到足够长的缓冲区来保存整个精确值,然后将其截断为字符串。就像是:
char buf[2*(DBL_MANT_DIG + DBL_MAX_EXP)];
snprintf(buf, sizeof buf, "%.*f", (int)sizeof buf, x);
char *p = strchr(buf, '.'); // beware locale-specific radix char, though!
p[2+1] = 0;
puts(buf);
Run Code Online (Sandbox Code Playgroud)