有没有办法使用fprint在c中打印双打,以便打印的精度最低(例如,总是打印一个没有小数的整数?)
我知道你可以做类似printf的事情("%。0f",数字);但我想知道是否有办法使用最小精度使打印精确(当然,无论何时数字都可以在基数10中有限地表示)。
答案 0 :(得分:3)
所有有限double
,以基数10或基数2(通常)编码,或者基数16可以完全在基数10中有限地打印。{ {1}}可能需要100多个数字,但它不是无限的。 DBL_MIN
无需执行该级别。因此它最终成为自定义代码,当然可以在没有零的情况下打印双打"
推荐printf()
并对缓冲区进行后期处理,以便根据需要移除最不重要的sprintf(buffer, "%.*e", DBL_DECIMAL_DIG - 1, some_double)
,足够接近"回答代码的目标。