<1>浮点类型

(1)两种类型

  1. double 字长64位(8个字节),有效数字15,范围大概为2.2* 10^-308 ~ 1.79*10^308,0,nan;
  2. 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及其它们的输入输出)的更多相关文章

  1. Java中浮点类型的精度问题 double float

    要说清楚Java浮点数的取值范围与其精度,必须先了解浮点数的表示方法与浮点数的结构组成.因为机器只认识01,你想表示小数,你要机器认识小数点这个东西,必须采用某种方法.比如,简单点的,float四个字 ...

  2. String和包装类Integer\Double\Long\Float\Character 都是final类型

    String和包装类Integer\Double\Long\Float\Character\Boolean 都是final类型 不可以改变

  3. C++中将string类型转换为int, float, double类型 主要通过以下几种方式:

      C++中将string类型转换为int, float, double类型 主要通过以下几种方式: # 方法一: 使用stringstream stringstream在int或float类型转换为 ...

  4. python开发基础(二)运算符以及数据类型之float(浮点类型)

    # encoding: utf-8 # module builtins # from (built-in) # by generator 1.147 """ Built- ...

  5. 使用头文件cfloat中的符号常量获知浮点类型数据的表数范围---gyy整理

    使用头文件cfloat中的符号常量获知浮点类型数据的表数范围 cfloat头文件包含了系统的浮点数的长度限制 头文件climits中的符号常量是获知整型数据的表数范围,并不能获取浮点类型数据的表数范围 ...

  6. Java double和 float丢失精度问题

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt357 由于对float或double 的使用不当,可能会出现精度丢失的问题. ...

  7. java 基础 浮点类型

    1.浮点类型用于表示小数的数据类型. 2.浮点数原理:也就是二进制科学计数法. 3.Java的浮点类型有float和double两种. 4.Java默认浮点类型计算的结果是double类型,字面量也是 ...

  8. MySQL 的三个浮点类型

    MySQL 支持的三个浮点类型是 FLOAT.DOUBLE 和 DECIMAL 类型. FLOAT 数值类型用于表示单精度浮点数值, DOUBLE 数值类型用于表示双精度浮点数值. 与整数一样,这些类 ...

  9. java用double和float进行小数计算精度不准确

    java用double和float进行小数计算精度不准确 大多数情况下,使用double和float计算的结果是准确的,但是在一些精度要求很高的系统中或者已知的小数计算得到的结果会不准确,这种问题是非 ...

  10. 关于java使用double还是float

    眼睛一亮在论坛上发现一枚很有价值的评论赶紧抄下来... 记住java一定要用double,更鼓不变,就算数值不大也要用double.了解java虚拟机的底层会知道,float放在内存中其实是当作dou ...

随机推荐

  1. 在Volo.Abp微服务中使用SignalR

    假设需要通过SignalR发送消息通知,并在前端接收消息通知的功能 创建SignalR服务 在项目中引用 abp add-package Volo.Abp.AspNetCore.SignalR 在Mo ...

  2. Programming abstractions in C阅读笔记:p84-p87

    <Programming Abstractions In C>学习第43天,p84-p87总结. 一.技术总结 1.record record也称为structure(结构体),是一种数据 ...

  3. Dokcer学习之旅(2)——Dockerfile基础应用

    什么是Dockerfile? 从docker commit 的学习中,我们可以了解到,镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本, ...

  4. 如何调用api接口获取到商品数据

    要调用API接口获取商品数据,需要进行以下步骤: 确定API接口 首先需要确定要使用的API接口,可以通过搜索引擎或者相关文档来查找适合的API接口.以淘宝开放平台为例,可以使用淘宝的商品信息查询AP ...

  5. 架构师必会之-DBA级问题的数据库底层设计思想

    大家好,我是sulny_ann,这期想跟大家分享一下我之前在面试里面问过比较难的数据库相关的问题. 大家经常也在调侃后端好像就是技术数据库的增删改查,所以作为后端开发,你对应数据库这一块掌握的怎么样, ...

  6. mall :hutool项目源码解析

    目录 一.mall开源项目 1.1 来源 1.2 项目转移 1.3 项目克隆 二.Hutool工具类库 2.1 Hutool 简介 三.源码解析 3.1 集成与配置 3.1.1 导入依赖 3.1.2 ...

  7. 使用 Sealos 在离线环境中光速安装 K8s 集群

    作者:尹珉.Sealos 开源社区 Ambassador,云原生爱好者. 当容器化交付遇上离线环境 在当今快节奏的软件交付环境中,容器化交付已经成为许多企业选择的首选技术手段.在可以访问公网的环境下, ...

  8. 2022最新 Navicat Premium 16中文软件激活安装永久使用正版(支持MAC+win)

    Navicat Premium 16中文正版永久使用,下载地址: 关注我的wx公众号"奋斗在IT"回复1015获取下载地址

  9. 使用JAVA调用KRPANO加密XML

    KRPano自带的命令行工具krpanotools可以加密XML,具体的参数说明如下语法:   krpanotools32.exe encrypt [OPTIONS] inputfiles input ...

  10. 鞭尸没 jj

      提前退役了.现在我想说一点无关紧要的闲话.   与其说是 OI 回忆录,不如说是对这主线明确的六年做的一个梳理,倒不一定 OI 强相关. 壹.零度下的相遇 视线就这样交叠 与你   最初接触到 O ...