1.2浮点类型

1.浮点类型

  • float:
    • 字长:32,
    • 范围:±(1.20*10^-38 ~ 3.40*10^38), 0, ±inf, nan,
    • 有效数字:7
    • 输入(scanf):%f
    • 输出(printf):%f,%e
  • double:
    • 字长:64,
    • 范围:±(2.2*10^-308 ~ 1.79*10^308),0, ±inf, nan,
    • 有效数字:7
    • 输入(scanf):%lf
    • 输出(printf):%f,%e

2. 科学计数法

这里写图片描述

#include<stdio.h>

int main()
{
    double ff = 1234.56789;
    printf("%e,%f\n", ff, ff);// 1.234568e+003,1234.567890
    printf("%E,%f\n", ff, ff);// 1.234568E+003,1234.567890
    return 0;
}

3.输出精度

在%.nf中,n是指定的输出几位小数,输出结果是四舍五入的

#include<stdio.h>

int main()
{
    double ff = 1E-10;
    printf("%E,ff=%.16f\n", ff, ff); // 1.000000E-010,ff=0.0000000001000000

    float i = -0.0049; 
    printf("%.3f\n", i); // -0.005
    printf("%.30f\n", i); // -0.004900000058114528700000000000
    i = 0.00049;
    printf("%.3f\n", i); // 0.000
    return 0;
}

4.超过范围的浮点数

printf:

  • 超过范围的浮点数(±∞):inf,无穷大 (infinity 的缩写)
  • 不存在的浮点数:nan 。IND是Windows上的说法,NaN是Linux上的说法,”IND”是 indeterminate 的缩写,而”nan”是 not a number 的缩写

如果遇到 1.#INF / inf,就检查是否发生了运算结果溢出除零,而遇到 1.#IND / nan,就检查是否发生了非法的运算

#include<stdio.h>

int main()
{
    printf("%f\n", 12.0/0.0); // 1.#INF00
    printf("%f\n", -12.0/0.0); // -1.#INF00
    printf("%f\n", 0.0/0.0); // -1.#IND00,表示发生了除0错误 

    printf("%d\n", 12/0); // 会出警告:[Warning] division by zero [-Wdiv-by-zero]
    return 0;
}

5. 浮点运算的精度

#include<stdio.h>

int main()
{
    float a, b, c;
    a = 1.345f;
    b = 1.123f;
    c = a + b;

    if(c == 2.468){
        printf("相等\n");
    } else {
        printf("不相等! c=%.10f, 或%f\n", c, c);// 不相等! c=2.4679999352, 或2.468000
    }
    return 0;
}

带小数点的变量是double,不是float
float需要用 f 或 F 后缀来表明身份

6.选择浮点类型

  • 没有特殊需要,用double
  • 现代CPU能直接对double做硬件运算,性能不会比float差,在64位的机器上,数据存储的速度也不比float慢

浮点数在计算时,是由专门的硬件实现的
整数是以二进制的形式存在于计算机内部的,浮点数不是
浮点数的编码的数字,两个浮点数在计算机内部 不能直接用二进制的方式进程运算,需要专门的硬件支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值