C语言重来35:浮点数的类型

首先概述一下浮点的类型以及两个类型的字长和各种不同的特征:

类型

字长

范围

有效数字

float

32(四个字节)

+/-(1.20×10^38~3.40×10^38),0,+/-inf,nan

7

double

64(八个字节)

+/-(2.2×10^-308~1.79×10^308),0,+/-inf,nan

15

nan表示它不是一个有效的数字(not a number)。inf的意思是无穷大。

当然,注意这里面的float和double都可以表示接近0的东西,但是过于接近0的话,是无法表达的。

我们再用一个表格来进行两种浮点数的输出和输入的总结

类型

scanf

printf

float

%f

%f,%e

double

%lf

%f,%e(这块我一般情况下都是使用的%lf)

注意这里的%e输出的是以科学计数法的形式输出,我们在代码中具体看一下这个输出语句的结果:

我们在输出的时候进行对比输出,看看两个输出的区别:

#include<stdio.h>
int main() 
{
    double ff = 1234.56789;
    printf("%e,%f", ff, ff);
    return 0;
}

结果出来是这个样子的:

当然把百分号后面的小写的e改为大写的E之后,在输出的时候也是把科学计数法的小写的e变为大写的E罢了。

我们以一个科学计数法表示的数字为例子,来进行一系列的说明:

比如-5.67E+16

从左往右有几点是要注意的:

  1. 是最前面的+和-两个符号这个代表整个数字的正负。

  1. 后面的数字可以有小数点也可以没有小数点。

  1. 大写的E和小写的e都是 可以的。

  1. 在整个数中不能带有空格。

  1. 最后的表示次方的数字,如果是正数的话,就可以带正号也可以不带正号,如果是负数的话就必须带上负号。

当然不仅在输出的时候可以使用科学计数法,我们在输入的时候也可以使用科学计数法 。

当我们使用%f或者%lf输出的时候,最后输出的结果默认是小数点后6位,当然我们可以在百分号和f中间加上小数点和你想输出的小数后面的位数。

注意这里的输出是四舍五入的输出,我们可以在程序中具体看一下:

#include<stdio.h>
int main() 
{
    printf("%.3f\n", -0.0049);
    printf("%.30f\n", -0.0049);
    printf("%.3f\n", -0.00049);
    return 0;
}

最后输出的结果是这个样子的:

我们可以看到这里并不是精度的问题而是浮点数自带的误差所导致。

当我们极端的使用取小数点的方式的时候,出现-0.000的形式。

当然,注意的是如果位数和小数点后几出现冲突的话,结果是以小数点后几位作为标准的。

同时注意这里面的四舍五入的机制。

这里补充一点上面的四舍五入的机制。
准确来讲的话不是四舍五入, 而是四舍六入。
当需要四舍五入的那位为5的时候,如果它的前一位为奇数的话,那就往前进一位,如果前面的那一位为偶数的话,那就舍弃这一位

当然在后面学到使用四舍五入的时候可以使用加0.5的方法来解决,比如自己自定义一个函数来进行四舍五入的判断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值