garin Asked:2020-10-16 20:29:15 +0000 UTC2020-10-16 20:29:15 +0000 UTC 2020-10-16 20:29:15 +0000 UTC С: 如何实现没有无意义零的实数输出? 772 该函数输出一个实数数组。但这会导致不显着的零。 有没有简单的方法可以切断它们? 例如,有 2.00000 0.00000 421.12340 5.12909 它需要是: 2. 0. 421.1234 5.12909 c 1 个回答 Voted Best Answer avp 2020-10-17T04:11:55Z2020-10-17T04:11:55Z 简单地说,像这样 avp@avp-xubu2:~/hashcode$ cat t.c && gcc t.c && echo "===== result =====" && ./a.out #include <stdio.h> #include <string.h> char * fz (double f, char *s) { sprintf(s, "%f", f); char *p = strrchr(s, '0'); if (p && !p[1]) while (*p == '0') *p-- = 0; return s; } int main() { double f = 1.203; printf("%f\n", f); char s[100]; printf("%s\n", fz(f, s)); printf("%s %s %s %s\n", fz(2.0, s), fz(0.0, s + 20), fz(421.1234, s + 40), fz(5.12909, s + 60)); return puts("End") == EOF; } ===== result ===== 1.203000 1.203 2. 0. 421.1234 5.12909 End avp@avp-xubu2:~/hashcode$
简单地说,像这样