关于C语言中不同类型数据进行计算 有符号和无符号数进行计算
float是8个有效位,

做个试验:

输出如下:

上面说明了什么:
1, 18/2.2 是除不尽的, 因为是define,所以没有给ratio变量赋值类型,但是从sizeof输出的结果是8,所以系统默认给ratio的类型是double类型了.
即是是除进了 #define ratio 8.8 这样就算是有限的小数,也是double类型的.
2,%.3f是可以输出小数点三位的,但是我们看到循环部分是1818181818....然后输出3位小数的时候,就是进一了,出现了182,这个2就是进位得到的.
改成%.4f输出的时候,结果是:
说明了,这里的规则可能是,四舍五入,因为四位小数的时候,8没有变成9.
3, 还有一个是这个是double类型的但是我输出的是%f,也是可以输出的. 按照正常情况,应该是%lf的.
4,我把他以%.10f输出
也是可以输出来的.因为是double类型,这里我们做第二是实验.
第二实验


输出结果:

从上面的实验可以看出,
1, 这里直接定义了float变量 ratio_2, 它就是float,然后输出的sizeo是4.
2,我以 %.10f进行输出 8.1818180084 这里看到float的精度损失了,因为float是8个有效数字的.
关于有效数字: (8个有效数字,第8个数是不准的)

但是 doule 格式的输出是没有问题的.
第三个实验,


输出结果:

从上面可以得到:
1,一个ratio_3是int 然后减去一个无限小数后,输出结果,还是int , 10-8.18...=1.8左右; 但是最终的结果是1.
关键这里,也没有进一,就很奇怪了.看来转换的时候,就是直接去除了.
下面还有一个对比实验.
2,然后如果让int类型的 ratio_3 以float类型输出,那么就是错误的,会是0.因为int和float的二进制存储机制是不同的.
3,之后多减几次:
减两次:
10-8.1818....-8.1818... =
这里是-7,
减三次:
10-8.1818...-8.1818...-8.1818...=
这里是-15,
可以看出无论减多少次,都是不要小数的....
上面的实验是,从double类型的数据,通过和int类型计算,转换成int类型的
这里就是直接把小数部分省掉了,
如果是,把double类型的强制转换成int呢??? 需要做下面的实验四.
第四个实验,

输出结果

说明什么,
1, 把 8.18181.... 通过 (int) 进行强制转换, 输出结果是8
可能是位数不够
然后


然后运行的结果:
把float输出来 
上面是float 进行强制转换, 只有到8个9的时候, 1.999...才变成了2 .
之前少于8个9,如论是多少,都会被舍去.
然后把float换成double再试一次:


然后运行结果:

从上面看,好像double无论是几个都不会出现 1.9999 变成2 的情况 也许是因为你的9不够多.
这里int 和double运算,赋值给int后,,,,和强制转换int似乎是一样的结果.??? 还有待去验证...

https://www.cnblogs.com/weiyouqing/p/9090542.html

https://blog.csdn.net/qq_47406941/article/details/112707018
参考上面博主.
关于上面的,会造成一个问题.
(int 类型的数据 ) - (double类型数据) = (in类型数据.)
这样计算出的int就会损失一部分.
为了不损失,可以转换一下思路:把float+0.5 在参与计算,这样,有的时候会增加,有的时候会减小,平均下来,就不变了...



该死呦,把计算机二级的东西都忘干净了
最后来一道计算机二级选择题吧:


不同类型计算:
https://www.cnblogs.com/qingergege/p/7507533.html
关于负数移位操作:
https://www.cnblogs.com/L-0x0b/p/10858523.html


关于C语言中不同类型数据进行计算 有符号和无符号数进行计算的更多相关文章
- .SQL Server中 image类型数据的比较
原文:.SQL Server中 image类型数据的比较 在SQL Server中如果你对text.ntext或者image数据类型的数据进行比较.将会提示:不能比较或排序 text.ntext 和 ...
- C语言中不同类型的循环(Different types of loops in C)
C语言中有三种类型的循环:for,while,do-while. while循环先判断循环条件. while (condition) { //gets executed after condition ...
- R语言中的横向数据合并merge及纵向数据合并rbind的使用
R语言中的横向数据合并merge及纵向数据合并rbind的使用 我们经常会遇到两个数据框拥有相同的时间或观测值,但这些列却不尽相同.处理的办法就是使用merge(x, y ,by.x = ,by.y ...
- DELPHI中枚举类型数据的介绍和使用方法
在看delphi程序的时候看到aa=(a,b,c,d);这样的东西,还以为是数组,同事说是函数,呵呵,当然这两个都不屑一击,原来这样式子是在声明并付值一个枚举类型的数据.下边写下来DELPHI中枚举类 ...
- C语言中不同类型的数据转换规则
不同类型数据间的混合运算与类型转换 1.自动类型转换 在C语言中,自动类型转换遵循以下规则: ①若参与运算量的类型不同,则先转换成同一类型,然后进行运算 ②转换按数据长度增加的方向进行,以保证精度不降 ...
- C++语言中的类型(二)
--分门别类是简化事物最有效的方式. C++语言的强大能力的体现在对程序员自定义数据类型的支持.C++语言主要的一个设计目标就是让程序员自定义的数据类型像内置类型一样好用. 一.自定义数据类型 数据类 ...
- C++语言中的类型(一)
--分门别类是简化事物最有效的方式. 类型是C++语言的基础,对象类型决定了能对该对象进行的操作. 一.基本内置数据类型 C++预先定义的基本内置数据类型是构造世界万物的原子,数据类型告诉我们数据的意 ...
- MySQL中enum类型数据,要传入字符串
问题来源:公司业务,某张表中一个字段定义为: enum('0','1','2','3','4','5','6','7','8','9','10') NOT NULL DEFAULT '0' 某天跑脚本 ...
- c++中各类型数据占据的字节长度
c++中各种类型数据类型占据字节长度 首先罗列一下C++中的数据类型都有哪些: 1.整形:int.long 2.字符型:char.wchar_t 3.布尔型:bool 4.浮点型:float.doub ...
随机推荐
- 前端面试手写代码——模拟实现new运算符
目录 1 new 运算符简介 2 new 究竟干了什么事 3 模拟实现 new 运算符 4 补充 预备知识: 了解原型和原型链 了解this绑定 1 new 运算符简介 MDN文档:new 运算符创建 ...
- clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
修改文件 /etc/sysconfig/nfs将#MOUNTD_PORT=892开启防火墙端口:firewalld-cmd --add-port=892/tcp
- linux下c语言实现简单----线程池
这两天刚好看完linux&c这本书的进程线程部分,学长建议可以用c语言实现一个简单的线程池,也是对线程知识的一个回顾与应用.线程的优点有好多,它是"轻量级的进程",所需资源 ...
- C 数组类型语法总结
数组类型语法总结 数组指针 和 指针数组 区分 数组指针是一个指针,只对应类型的数组.指针数组是一个数组,其中每个元素都是指针 数组指针遵循指针运算法则.指针数组拥有c语言数组的各种特性 数组类型重命 ...
- Centos6.8 yum报错及修复YumRepo Error: All mirror URLs are not using ftp, http[s] or file. Eg. Invalid
问题 使用yum安装软件时报错 YumRepo Error: All mirror URLs are not using ftp, http[s] or file. Eg. Invalid relea ...
- 计算机网络tcp
tcp/ip协议 什么是这个协议:计算机与网络设备之间通信的时候,两者需要使用相同的语言,如何侦察到对方,如何传输,谁先传输,都需要规定有一系列的协议,而tcp/ip协议则是这样的一种 tcp/ip的 ...
- Django 小实例S1 简易学生选课管理系统 2 新建项目(project)并进行设置
Django 小实例S1 简易学生选课管理系统 第2节--新建项目(project)并进行设置 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 0 ...
- 配置Google支付相关参数(client_id, client_secret, refresh_token)
1. 登陆Google开发者账号,点击左边API权限 Google控制台 创建新项目 转到 Google Play 管理中心的 API 权限页面. 接受<服务条款>. 点击创建新项目. 系 ...
- 菜鸡的Java笔记 第七 - java 数组
数组的基本概念 笔试中经常出现的试题或是问题 1.1 概念 数组指的是一组相关变量的集合 如果用最原始的方式定义100个变量的话没问题但是这些变量的关联实在 ...
- [loj6033]棋盘游戏
将棋盘黑白染色,即构成一张二分图 将状态用一张二分图$G$和一个点$x\in V$描述(分别为仍未被经过的点的导出子图和当前棋子所在位置),并称将要移动棋子的一方为先手 结论:先手必胜当且仅当$x$一 ...