一、浮点数概念

  • 浮点数也称小数或实数。
  • C语言中采用floatdouble关键字来定义小数,float称为单精度浮点型,double称为双精度浮点型,long double更长的双精度浮点型。
  • 在任何区间内(如1.0 到 2.0 之间)都存在无穷多个实数,计算机的浮点数不能表示区间内所有的值。
  • 占用内存的情况:
#include <stdio.h>int main()
{printf("sizeof float is %d\n",sizeof(float));//sizeof float is 4printf("sizeof double is %d\n",sizeof(double));//sizeof float is 8printf("sizeof long double is %d\n",sizeof(long double));//sizeof float is 16
}
  • float只能表达6-7位的有效数字,不能用“==”判断两个数字是否相等。
  • double能表达15-16位有效的数字,可以用“==”判断两个数字是否相等。
  • long double占用的内存是double的两倍,但表达数据的精度和double相同。
  • 在实际开发中,建议弃用float,只采用double就可以,long double暂时没有必要,但不知道以后的操作系统和编译器对long double是否有改进。

二、浮点数的输出

  • float采用%f占位符。
  • double采用%lf占位符。测试结果证明,double不可以用%f输入,但可以用%f输出,但是不建议采用%f,因为不同的编译器可能会有差别。
  • long double采用%Lf占位符,注意,L是大写。
  • 浮点数输出缺省显示小数点后六位。
  • 浮点数采用%lf输出,完整的输出格式是%m.nlf,指定输出数据整数部分和小数部分共占m位,其中有n位是小数。如果数值长度小于m,则左端补空格,若数值长度大于m,则按实际位数输出。
double ff=70001.538;
printf("ff=%lf=\n",ff);       // 输出结果是ff=70001.538000=
printf("ff=%.4lf=\n",ff);     // 输出结果是ff=70001.5380=
printf("ff=%11.4lf=\n",ff);   // 输出结果是ff= 70001.5380=
printf("ff=%8.4lf=\n",ff);    // 输出结果是ff=70001.5380=

三、常用的库函数

double atof(const char *nptr);       // 把字符串nptr转换为double
double fabs(double x);                // 求双精度实数x的绝对值
double pow(double x, double y);      // 求 x 的 y 次幂(次方)
double round(double x);               // double四舍五入
double ceil(double x);                // double向上取整数
double floor(double x);               // double向下取整数
double fmod(double x,double y);      // 求x/y整除后的双精度余数
// 把双精度val分解成整数部分和小数部分,整数部分存放在ip所指的变量中,返回小数部分。
double modf(double val,double *ip);

四、整数与浮点数的转换

  • 在浮点数的取值范围内,整数转换为浮点数不会有精度的损失,浮点数转换为整数后,会丢弃小数位。
#include <stdio.h>int main()
{int ii=3;int jj=4;double dd;dd=ii;        // 可以printf("dd is %.2lf\n",dd); //dd is 3.00dd=ii/jj;     // 不行printf("dd is %.2lf\n",dd); //dd is 0.00dd=(double)ii/jj;  // 可以printf("dd is %.2lf\n",dd); //dd is 0.75
}

五、科学计数法

  • 用科学记数法表示数时,不改变数的符号,只是改变数的书写形式而已,可以方便的表示日常生活中遇到的一些极大或极小的数 。如:光的速度大约是300,000,000米/秒;全世界人口数大约是:6,100,000,000,这样的数书写和显示都很不方便,为了免去写这么多重复的0,将其表现为这样的形式:6,100,000,000=6.1×109,即6.1E9或6.1e9。
  • 0.00001=1×10-5,即绝对值小于1的数也可以用科学记数法表示为a乘10-n的形式。即1E-5或1e-5。
  • 科学计数法采用%e%E输出,完整的输出格式是%m.ne或%m.nE,指定输出数据整数部分和小数部分共占m位,其中有n位是小数。如果数值长度小于m,则左端补空格,若数值长度大于m,则按实际位数输出。
#include <stdio.h>int main()
{double dd;dd=123000000;printf("dd is  %.2e\n",dd);dd=-123000000;printf("dd is %.2e\n",dd);dd=0.0000000123;printf("dd is  %.2e\n",dd);dd=-0.0000000123;printf("dd is %.2e\n",dd);
}
  • 运行结果:

小白入门C语言之浮点数详解相关推荐

  1. 小白入门!网络安全基础知识详解(附知识问答)

    小白入门!网络安全基础知识详解(附知识问答) 一.引论 提到网络安全,一般人们将它看作是信息安全的一个分支,信息安全是更加广义的一个概念:防止对知识.事实.数据或能力非授权使用.误用.篡改或拒绝使用所 ...

  2. 【C语言】函数详解(入门到进阶)

    目录 前言 一.什么是函数 二.函数的构成 三.函数的调用和声明 四.函数的参数 五.函数的递归 总结 写在后面 前言 最近帮家里的小朋友整理一些学习C语言的知识点 有整体入门基础文章--[C语言]拯 ...

  3. Django新手入门(五)——Models详解

    Django新手入门(五)--Models详解 数据库 ORM Django中的ORM Django中的Models 定义models.py中的类 常用数据字段 常用设置选项 常用函数以及修饰词 其他 ...

  4. JDBC学习笔记01【JDBC快速入门、JDBC各个类详解、JDBC之CRUD练习】

    黑马程序员-JDBC文档(腾讯微云)JDBC笔记.pdf:https://share.weiyun.com/Kxy7LmRm JDBC学习笔记01[JDBC快速入门.JDBC各个类详解.JDBC之CR ...

  5. AT89C51单片机流水灯c语言程序及详解(扫盲教程)

    AT89C51单片机是我们学习单片机必学的一个单片机,也是单片机入门的教材,下面给大家展示一下流水灯的编写方法适合初学者 首先先在proteus画出仿真图,方便仿真程序 下面来编写程序,先来写入头函数 ...

  6. Elastic search入门到集群实战操作详解(原生API操作、springboot整合操作)-step1

    Elastic search入门到集群实战操作详解(原生API操作.springboot整合操作)-step2 https://blog.csdn.net/qq_45441466/article/de ...

  7. c语言struct的作用和用法,c语言struct用法详解

    c语言struct用法详解 在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据.结构体的定义形式为:struct 结构体名{ 结构体所包含的变量或数组 }; 结构体是一种集合,它里面包 ...

  8. 【C语言】操作符详解(超详细)

    hello~~,我是~小鹿,超级详细的操作符讲解来康康吧 可以收藏随时找到这里哦~ [C语言]操作符详解(超详细) 1.算数操作符:+,-,*,/,% 2.位移操作符:<< , >& ...

  9. (转)C语言位运算详解

    地址:http://www.cnblogs.com/911/archive/2008/05/20/1203477.html C语言位运算详解 作者:911 说明:本文参考了http://www2.ts ...

最新文章

  1. Go语言源码分析CAS的实现和Java如出一辙
  2. spring 托管bean_在非托管对象中使用Spring托管Bean
  3. UML设计,可以设计程序的用例图、类图、活动图等_SurfaceView
  4. 经典C语言程序100例之十一
  5. configure: error: Neither flex nor lex was found.
  6. 高可用与负载均衡(5)之基于客户端的负载均衡
  7. C#EXCEL 操作类--C#DataToExcel帮助类
  8. 2017.10.16 水管局长水管局长数据加强版 思考记录
  9. 51cto 检测ip地址冲突_arping 检测IP地址冲突
  10. 《中国人工智能学会通讯》——9.6 哈希学习
  11. Docker搭建RabbitMQ
  12. 1.1介绍线程和运行(Introducing Thread and Runnable)
  13. 带鉴权信息的SIP呼叫
  14. 面向对象16:代码块、final关键字
  15. htc tracker avatar
  16. Linux ssh登陆命令
  17. WebDriver中页面滚动(scrolling)
  18. 结对第一次—原型设计(文献摘要热词统计)
  19. 【360图书馆】插入U盘自动攻击:BadUSB原理与实现
  20. VCC VDD, VEE, VSS是什么意思?

热门文章

  1. 名帖347 怀素 草书《大草千字文》
  2. 转 js控制excel打印完美解决方案
  3. 华为m6更新鸿蒙吗,华为手机升级鸿蒙的方法,有哪位升级成功的吗?
  4. 18966 两两配对差值最小
  5. 2022年lazada跨境店 新,马,泰,菲等4个国家正式开放食品类目招商
  6. 上计算机课睡觉检讨书400,上自习课睡觉检讨书500字范文【三篇】
  7. 【无人机航测实习简明教程】1 无人机航测常见名词术语解释
  8. 5G推动下,XR的需求“爆发”会来自B端还是C端?...
  9. [TI TDA4 J721E]开发板网络调试功能及开机自动配置网络
  10. 苹果手机导出照片到电脑上