黑马程序员技术交流社区

标题: float 的用法求解 [打印本页]

作者: sxakljf    时间: 2015-5-29 20:15
标题: float 的用法求解
#include <stdio.h>

int main() {

    float ljf2 = 3.456;
   
    printf("ljf2 = %2f\n",ljf2);
   
    printf("ljf2 = %5.3f\n",ljf2);
   
    printf("ljf2 = %5f\n",ljf2);
   
    return 0;
}

作者: hi虚无缥缈    时间: 2015-5-29 21:12
查一下笔记,域宽和精度的问题.
作者: sxakljf    时间: 2015-5-29 22:39
hi虚无缥缈 发表于 2015-5-29 21:12
查一下笔记,域宽和精度的问题.

#include <stdio.h>

int main() {

    float ljf2 = 3.456;
   
    printf("ljf2 = %2f\n",ljf2);
   
    printf("ljf2 = %5.3f\n",ljf2);
   
    printf("ljf2 = %5f\n",ljf2);
   
    return 0;
}
//只有同时限定总位数与小数位数才能正常显示
作者: 埃林的奶酪    时间: 2015-5-29 23:24
printf("ljf2 = %5.3f\n",ljf2)
表示输出的float类型至少占5个字节,且有3位小数
作者: 七尺阳光    时间: 2015-5-30 00:03
好吧,学习了
作者: sxakljf    时间: 2015-5-30 12:32
float默认显示6位小数,如果想要限定位数,就在%.xf(.x)就是要限定显示出来的值。也是找别人帮忙才知道的

作者: 任伟    时间: 2015-5-30 12:43
float 是不精确的浮点数,因此很多要求精确的数学常识在float上不成立.

举例: 假设 a b c 都是 int
那么  a+b+c 和 c+b+a 的结果永远是相等的(哪怕溢出了也相等)
而如果 a b c 都是float,则上面算式是不成立的
两个的计算结果很可能不一样(但是误差为机器0, 在64位上误差比32位小得多)
也就是  0.4999+0.5001 有可能等于 1 也有可能等于0.99999999999998 或者 1.00000000001
作者: 任伟    时间: 2015-5-31 13:27
好好的学习一下视频吧
作者: chensc    时间: 2015-6-2 19:22
学习学习!
作者: 李竞还活着    时间: 2015-6-3 02:32
float是单精度类型,它的有效值一共是七位,小数后有效值最多是6位,不足的补0;还有printf函数中%m.nf的意思是输出一个float类型的实数,要求一共有m位,小数位要有n位。
作者: jx836202365    时间: 2015-6-3 19:32
m.nf   m表示总位数,n表示小数点后位数
作者: 曹文博    时间: 2015-6-7 23:59
%f输出默认的6位小数,如果不够6位,打0 .
//只打印n位小数,四舍五入 则用printf(“%.nf,f1”)
  %m.nf
    M表示总的位数(列数)。N表示小数点后的位数
%f打印出来后,float小数点后精度是6位,有效数字是7位。
%f打印出来后,double小数点后精度是6位,有效数字是15位。
后边的打不出来,是随机的。
作者: 天下1083    时间: 2015-6-8 11:50
视频上说的很清楚啊,m.nf   m表示总位数,n表示小数点后位数




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2