【发布时间】:2015-06-17 13:13:47
【问题描述】:
有没有办法在 c 中使用 fprint 打印双精度数,以便打印的精度尽可能低(例如,一个整数总是打印不带小数?)
我知道你可以做类似 printf("%.0f",number);但是我想知道是否有一种方法可以使用使打印精确的最小精度(当然,只要数字可以以 10 为底有限地表示)。
【问题讨论】:
-
1.0/3.0表达式的结果你希望打印什么? -
是的。 1/3.0 可能具有最接近的
double一些值,例如0.3333333333333333148296162562473909929395那么你期望什么? -
这就是为什么我说只有当它可以以 10 为底有限表示时。
-
使用
DBL_DECIMAL_DIG有效数字打印足以区分所有double。因此,过去的其他数字具有有限的价值。代码可以使用printf("%.*le", DBL_DECIMAL_DIG - 1, some_double),这是问题的上限。