小白入门C语言之浮点数详解
一、浮点数概念
- 浮点数也称小数或实数。
- C语言中采用
float
和double
关键字来定义小数,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语言之浮点数详解相关推荐
- 小白入门!网络安全基础知识详解(附知识问答)
小白入门!网络安全基础知识详解(附知识问答) 一.引论 提到网络安全,一般人们将它看作是信息安全的一个分支,信息安全是更加广义的一个概念:防止对知识.事实.数据或能力非授权使用.误用.篡改或拒绝使用所 ...
- 【C语言】函数详解(入门到进阶)
目录 前言 一.什么是函数 二.函数的构成 三.函数的调用和声明 四.函数的参数 五.函数的递归 总结 写在后面 前言 最近帮家里的小朋友整理一些学习C语言的知识点 有整体入门基础文章--[C语言]拯 ...
- Django新手入门(五)——Models详解
Django新手入门(五)--Models详解 数据库 ORM Django中的ORM Django中的Models 定义models.py中的类 常用数据字段 常用设置选项 常用函数以及修饰词 其他 ...
- JDBC学习笔记01【JDBC快速入门、JDBC各个类详解、JDBC之CRUD练习】
黑马程序员-JDBC文档(腾讯微云)JDBC笔记.pdf:https://share.weiyun.com/Kxy7LmRm JDBC学习笔记01[JDBC快速入门.JDBC各个类详解.JDBC之CR ...
- AT89C51单片机流水灯c语言程序及详解(扫盲教程)
AT89C51单片机是我们学习单片机必学的一个单片机,也是单片机入门的教材,下面给大家展示一下流水灯的编写方法适合初学者 首先先在proteus画出仿真图,方便仿真程序 下面来编写程序,先来写入头函数 ...
- Elastic search入门到集群实战操作详解(原生API操作、springboot整合操作)-step1
Elastic search入门到集群实战操作详解(原生API操作.springboot整合操作)-step2 https://blog.csdn.net/qq_45441466/article/de ...
- c语言struct的作用和用法,c语言struct用法详解
c语言struct用法详解 在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据.结构体的定义形式为:struct 结构体名{ 结构体所包含的变量或数组 }; 结构体是一种集合,它里面包 ...
- 【C语言】操作符详解(超详细)
hello~~,我是~小鹿,超级详细的操作符讲解来康康吧 可以收藏随时找到这里哦~ [C语言]操作符详解(超详细) 1.算数操作符:+,-,*,/,% 2.位移操作符:<< , >& ...
- (转)C语言位运算详解
地址:http://www.cnblogs.com/911/archive/2008/05/20/1203477.html C语言位运算详解 作者:911 说明:本文参考了http://www2.ts ...
最新文章
- Go语言源码分析CAS的实现和Java如出一辙
- spring 托管bean_在非托管对象中使用Spring托管Bean
- UML设计,可以设计程序的用例图、类图、活动图等_SurfaceView
- 经典C语言程序100例之十一
- configure: error: Neither flex nor lex was found.
- 高可用与负载均衡(5)之基于客户端的负载均衡
- C#EXCEL 操作类--C#DataToExcel帮助类
- 2017.10.16 水管局长水管局长数据加强版 思考记录
- 51cto 检测ip地址冲突_arping 检测IP地址冲突
- 《中国人工智能学会通讯》——9.6 哈希学习
- Docker搭建RabbitMQ
- 1.1介绍线程和运行(Introducing Thread and Runnable)
- 带鉴权信息的SIP呼叫
- 面向对象16:代码块、final关键字
- htc tracker avatar
- Linux ssh登陆命令
- WebDriver中页面滚动(scrolling)
- 结对第一次—原型设计(文献摘要热词统计)
- 【360图书馆】插入U盘自动攻击:BadUSB原理与实现
- VCC VDD, VEE, VSS是什么意思?
热门文章
- 名帖347 怀素 草书《大草千字文》
- 转 js控制excel打印完美解决方案
- 华为m6更新鸿蒙吗,华为手机升级鸿蒙的方法,有哪位升级成功的吗?
- 18966 两两配对差值最小
- 2022年lazada跨境店 新,马,泰,菲等4个国家正式开放食品类目招商
- 上计算机课睡觉检讨书400,上自习课睡觉检讨书500字范文【三篇】
- 【无人机航测实习简明教程】1 无人机航测常见名词术语解释
- 5G推动下,XR的需求“爆发”会来自B端还是C端?...
- [TI TDA4 J721E]开发板网络调试功能及开机自动配置网络
- 苹果手机导出照片到电脑上