浮点类型(double与float及其它们的输入输出)
<1>浮点类型
(1)两种类型
- double 字长64位(8个字节),有效数字15,范围大概为2.2* 10^-308 ~ 1.79*10^308,0,nan;
- float字长32位(4个字节),有效数字7,范围大概为1.2 * 10^-38 ~3.4*10^38,0,nan;
————注明-nan:不是一个有效数字
由两种浮点类型的范围建立数轴可知:在靠近0但不包括0的一小片区域我们无法表达(这片区域关于0左右对称)
(2)类型对应的输入输出
- float 输入%f 输出%f,%e;
- double 输入%lf 输出%lf,%e;
注:%e意为输出一个科学计数法
以一段代码为例:
#include<stdio.h>
int main(){
double ff=1234.56789;
printf("%e\n %f",ff,ff);
return 0;
}输出的结果为1.234568e+003
1234.567890
(3)引申:科学计数法
举例:-5.67E+16
- 整体的第一个+-可选;
- e/E都可以;
- 不能出现空格;
- 整体的第二个+-号可以省略;
- 小数点可选;
(4)保留小数点后几位数时涉及四舍五入的问题
以一段代码举例:
#include<stdio.h>
int main(){
printf("%.3f\n",-0.0049);
printf("%.30f\n",-0.0049);
printf("%.3f\n",-0.00049);
return 0;
}得出的结果为:-0.005
-0.004899999999999999800000000000(接近原数,小于原数)
-0.000
<2>浮点数的范围与精度
(1)超过浮点数的范围
- printf输出inf表示超过范围的浮点数;
- printf输出nan表示不存在的浮点数;
一个数除以0得到的数为无穷大,以一段代码为例:
#include<stdio.h>
int main(){
printf("%f\n",12.0/0.0);
printf("%f\n",-12.0/0.0);
printf("%f\n",0.0/0.0);
return 0;
}得出的结果为:1.#INF00
-1.#INF00
-1.#IND00
同时我们还需要注意:整数不能除以0-例如12/0,编译就不会通过;
(2)浮点的精度
————浮点没有精度
1)我们可以通过一段代码来分析浮点数是否有精度
#include<stdio.h>
int main(){
float a,b,c;
a=1.345f;
b=1.123f;
c=a+b;
if(c==2.468)
printf("相等");
else
printf("不相等,c=%.10f或%f\n",c,c);
return 0;
}得出的结果为:不相等,c=2.4679999352或2.468000;
由此可见:浮点没有精度
注意:
仅带小数点的字面量是double而非float;
因此加后缀f/F来表明变量类型为float;
2)运算中应注意的问题
在比较两个浮点数大小的过程中,直接让f1==f2可能失败,所以我们使用fabs(f1-f2)<1e-12(相当于1*10^-12),其中fabs()意为求绝对值
<3>浮点数的内部表达
1.浮点数在计算时是由专用的硬件部件实现的;
2.计算double和float用的部件是一样的;
3.浮点数的内部表达不同于整数内部表达,整数内部是二进制,而浮点数内部是一种编码形式:1个bit用来表达正负,11个bit用来表达它的指数部分,还有52(不一定)个bit用来表达它的分数部分
<4>浮点类型选择
无特殊需要,只使用double.
浮点类型(double与float及其它们的输入输出)的更多相关文章
- Java中浮点类型的精度问题 double float
要说清楚Java浮点数的取值范围与其精度,必须先了解浮点数的表示方法与浮点数的结构组成.因为机器只认识01,你想表示小数,你要机器认识小数点这个东西,必须采用某种方法.比如,简单点的,float四个字 ...
- String和包装类Integer\Double\Long\Float\Character 都是final类型
String和包装类Integer\Double\Long\Float\Character\Boolean 都是final类型 不可以改变
- C++中将string类型转换为int, float, double类型 主要通过以下几种方式:
C++中将string类型转换为int, float, double类型 主要通过以下几种方式: # 方法一: 使用stringstream stringstream在int或float类型转换为 ...
- python开发基础(二)运算符以及数据类型之float(浮点类型)
# encoding: utf-8 # module builtins # from (built-in) # by generator 1.147 """ Built- ...
- 使用头文件cfloat中的符号常量获知浮点类型数据的表数范围---gyy整理
使用头文件cfloat中的符号常量获知浮点类型数据的表数范围 cfloat头文件包含了系统的浮点数的长度限制 头文件climits中的符号常量是获知整型数据的表数范围,并不能获取浮点类型数据的表数范围 ...
- Java double和 float丢失精度问题
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt357 由于对float或double 的使用不当,可能会出现精度丢失的问题. ...
- java 基础 浮点类型
1.浮点类型用于表示小数的数据类型. 2.浮点数原理:也就是二进制科学计数法. 3.Java的浮点类型有float和double两种. 4.Java默认浮点类型计算的结果是double类型,字面量也是 ...
- MySQL 的三个浮点类型
MySQL 支持的三个浮点类型是 FLOAT.DOUBLE 和 DECIMAL 类型. FLOAT 数值类型用于表示单精度浮点数值, DOUBLE 数值类型用于表示双精度浮点数值. 与整数一样,这些类 ...
- java用double和float进行小数计算精度不准确
java用double和float进行小数计算精度不准确 大多数情况下,使用double和float计算的结果是准确的,但是在一些精度要求很高的系统中或者已知的小数计算得到的结果会不准确,这种问题是非 ...
- 关于java使用double还是float
眼睛一亮在论坛上发现一枚很有价值的评论赶紧抄下来... 记住java一定要用double,更鼓不变,就算数值不大也要用double.了解java虚拟机的底层会知道,float放在内存中其实是当作dou ...
随机推荐
- 论文解读(APCA)《Adaptive prototype and consistency alignment for semi-supervised domain adaptation》
[ Wechat:Y466551 | 付费咨询,非诚勿扰 ] 论文信息 论文标题:Adaptive prototype and consistency alignment for semi-super ...
- java file I/O流
一.File的简介:(java.io包) 生活中的文件: (1)文件的作用:持久化(瞬时状态的对立面状态) (1)文件的定义:一堆数据的集合 (2)文件存储的位置:磁盘,硬盘,软盘,U盘等等 计算机中 ...
- 让 GPT-4 来修复 Golang “数据竞争”问题 - 每天5分钟玩转 GPT 编程系列(6)
目录 1. Golang 中的"数据竞争" 2. GoPool 中的数据竞争问题 3. 让 GPT-4 来修复数据竞争问题 3.1 和 GPT-4 的第一轮沟通 3.2 和 GPT ...
- Ubuntu虚拟机安装以及在Ubuntu上安装pycharm
一.在VMware上安装Ubuntu操作系统 1.下载Ubuntu镜像文件 下载地址:清华大学开源软件镜像站 | Tsinghua Open Source Mirror 参考文章:Ubuntu系统下载 ...
- 《CTFshow-Web入门》06. Web 51~60
@ 目录 web51 题解 web52 题解 原理 web53 题解 原理 web54 题解 原理 web55 题解 原理 web56 题解 原理 web57 题解 原理 web58 题解 原理 we ...
- 接口自动化测试项目 | IHRM登录接口自动化测试
项目内容如下: ### 需求- 地址:http://ihrm-java.itheima.net/#/login- 测试接口: - 登录接口:针对登录的13个cases### 技术 - V1:pytho ...
- Java 中的日期时间总结
前言 大家好,我是 god23bin,在日常开发中,我们经常需要处理日期和时间,日期和时间可以说是一定会用到的,现在总结下 Java 中日期与时间的基本概念与一些常用的用法. 基本概念 日期(年月日, ...
- 2-MySQL基本语法
上文说到,数据库的安装和连接,接下来将给大家讲解MySQL数据库的基本语法及数据的类型 1.基本语法 (1).查看当前所有数据库 : show databases; (2).创建数据库 create ...
- 7.4 通过API枚举进程权限
GetTokenInformation 用于检索进程或线程的令牌(Token)信息.Token是一个数据结构,其包含有关进程或线程的安全上下文,代表当前用户或服务的安全标识符和权限信息.GetToke ...
- destoon根据目录下的html文件生成地图索引
因为项目需要,destoon根据目录下的html文件生成地图索引,操作方法,代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...