【发布时间】:2010-09-24 18:45:25
【问题描述】:
考虑下面的sn-p代码:
float val1 = 214.20;
double val2 = 214.20;
printf("float : %f, %4.6f, %4.2f \n", val1, val1, val1);
printf("double: %f, %4.6f, %4.2f \n", val2, val2, val2);
哪些输出:
float : 214.199997, 214.199997, 214.20 | <- the correct value I wanted
double: 214.200000, 214.200000, 214.20 |
我了解214.20 具有无限的二进制表示。第一行的前两个元素具有预期值的近似值,但最后一个似乎根本没有近似值,这导致我提出以下问题:
scanf、fscanf、printf、fprintf(等)函数如何处理精度格式?
在没有提供精度的情况下,printf 打印出一个近似值,但使用%4.2f 它给出了正确的结果。你能解释一下这些函数用来处理精度的算法吗?
【问题讨论】:
标签: c floating-point double precision