您好我阅读文件如下ANSI-C的fscanf问题
fscanf(fp,"%f %f %f\n",&*(p1+i), &*(p2+i), &*(p3+i));
我的文件行由三个浮点数的...
我的问题是,在该文件中比方说,我有一些浮点,让我们说,最多两个数字点后。但是当我要求c使用不同的格式打印这些值时,例如%lf,%。2lf,%。4lf ...它开始播放数字......我唯一担心的是,如果我已经说过了1343.23在文件中,那么c将使用这个值,就像它在计算中一样,或者它将与点后面的数字一起玩。如果它会播放,那么如何才能使它完全按照原样使用浮点数?例如在最后一种情况下,即使我要求它使用%.10lf打印该值,我希望它只打印1343.2300000000。非常感谢!
这是一个很好的链接,但根据定义,浮点数不是*近似值。确实,你不能在一个范围内表示每个浮点数(因为它们的数目是无限的),但根本不存在1/2或1/4或1/64的近似值。 – paxdiablo 2010-03-14 08:44:52
@paxdiablo:给定一个实际浮动的'x',当然它代表一个确切的数字。但是,'x'也表示范围(假设)为0.5 *(x + nextafter(x,-infinity))'到0.5 *(x + nextafter(x,infinity))'的无限多个实数。我承认在这里有两种不同的思维方式 - 一种方法是将任何浮点数作为范围,另一种方法是将其表示为确切数字。 5年前,comp.lang.c上有一段很长的话题,论点很好:http://groups.google.com/group/comp.lang.c/msg/beacbe60f477d2f2 – 2010-03-14 09:19:50
采取的观点,@Alok,您的观点作为范围的数字当然是有效的。 +1。 – paxdiablo 2010-03-14 10:40:48