A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© z82454642 中级黑马   /  2014-3-10 15:15  /  1402 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 z82454642 于 2014-3-11 23:35 编辑

float和double都是浮点型
float能表示至少6位有效数字
double能表示更多的有效数字
那么为什么下面这段代码同样输出一个数字,用float和double输出结果相同,这是为什么啊
  1. #include <stdio.h>

  2. int main()
  3. {
  4.     float a=10.123456876582f;
  5.     double b=10.123456876582;
  6.     printf("b=%f\n",a);
  7.     printf("a=%f\n",b);
  8. }
复制代码


输出结果
  1. a=10.123457
  2. b=10.123457
复制代码

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

5 个回复

倒序浏览
这是和你的输出格式有关的:
%f:默认输出6位有效数字,不管是float还是double。
改成%.3f表示输出3位小数

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
lixiangzhou 发表于 2014-3-10 15:35
这是和你的输出格式有关的:
%f:默认输出6位有效数字,不管是float还是double。
改成%.3f表示输出3位小数 ...

原来double输出也要给它设小数位数啊,真蛋疼我以为直接输出最多的位数呢
回复 使用道具 举报
double 和 float 都可以用%f 输出,默认为6位小数。如果有其它需求,那就需要指定了。
例如:
#include <stdio.h>
int main()
{
    float a=10.123456876582f;
    double b=10.123456876582;
    printf("a=%.8f\n",a);
    printf("b=%.10lf\n",b);
}
输出结果是:
b=10.12345687
a=10.1234568765

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
%f:默认输出6位有效数字
回复 使用道具 举报
%f:默认输出6位有效数字,不管是float还是double。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马