$ cat test.c
#include <stdio.h>
void main()
{
double v = 1.38;
printf("%lf\n", v);
printf("%.17g\n", v);
}
$ gcc test.c -o test
$ ./test
1.380000
1.3799999999999999
$ python3
Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> v = 1.38
>>> print("%s" % v)
1.38
需求很简单:我要在 C/C++ 中打印浮点数时,像 Python "%s" % v 那样打印,只打印必要的小数点后内容
Stack Overflow 上有一篇讨论
建议使用 printf("%.17g", number) 但是测试后发现它不工作
简单翻了一些资料,似乎 %.17g 的数字要达到 17 确实是有必要的
(我的系统是 Ubuntu 22.04 / x86_64)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.