c - 打印 double ,最后不加零?

标签 c printf double

有没有一种方法可以使用 fprint 在 c 中打印 double ,以便打印的精度尽可能低(例如,始终打印整数而不带小数?)

我知道你可以做类似 printf("%.0f",number); 的事情但我想知道是否有一种方法可以使用最小精度来使打印准确(当然,只要数字可以以 10 为基数进行有限表达)。

最佳答案

所有有限double,以基数10或基数2(通常)编码,或基数16可以完全以基数有限地打印10. DBL_MIN 可能需要 100 多个数字才能完成,但它不是无限的。 printf() 不需要执行到该级别。所以它最终成为自定义代码,当然可以“打印不带零的 double ”

推荐 sprintf(buffer, "%.*e", DBL_DECIMAL_DIG - 1, some_double) 并对缓冲区进行后处理,以根据需要删除最低有效 0 “足够接近”回答代码的目标。

Ref

关于c - 打印 double ,最后不加零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29584788/

相关文章:

具有 2 个参数问题的 C 预处理器宏

c - 我怎样才能纠正这个代码,以便它给出预期的结果

c - 单独使用时难以理解 c 指针(第 2 部分)

iphone - Objective C 的 ANALog 和 Printf 语句之间的区别

c - 带有关系符号的 printf

java - 获取包含最大值的随机 double 值(Java - ThreadLocalRandom)

c - 将屏幕拆分为 ncurses 和非 ncurses 区域

c - snprintf 给出不同的输出

c++ - 四舍五入/截断双

R:具有依赖性的二重积分