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语言中不同类型数据进行计算 有符号和无符号数进行计算的更多相关文章

  1. .SQL Server中 image类型数据的比较

    原文:.SQL Server中 image类型数据的比较 在SQL Server中如果你对text.ntext或者image数据类型的数据进行比较.将会提示:不能比较或排序 text.ntext 和 ...

  2. C语言中不同类型的循环(Different types of loops in C)

    C语言中有三种类型的循环:for,while,do-while. while循环先判断循环条件. while (condition) { //gets executed after condition ...

  3. R语言中的横向数据合并merge及纵向数据合并rbind的使用

    R语言中的横向数据合并merge及纵向数据合并rbind的使用 我们经常会遇到两个数据框拥有相同的时间或观测值,但这些列却不尽相同.处理的办法就是使用merge(x, y ,by.x = ,by.y ...

  4. DELPHI中枚举类型数据的介绍和使用方法

    在看delphi程序的时候看到aa=(a,b,c,d);这样的东西,还以为是数组,同事说是函数,呵呵,当然这两个都不屑一击,原来这样式子是在声明并付值一个枚举类型的数据.下边写下来DELPHI中枚举类 ...

  5. C语言中不同类型的数据转换规则

    不同类型数据间的混合运算与类型转换 1.自动类型转换 在C语言中,自动类型转换遵循以下规则: ①若参与运算量的类型不同,则先转换成同一类型,然后进行运算 ②转换按数据长度增加的方向进行,以保证精度不降 ...

  6. C++语言中的类型(二)

    --分门别类是简化事物最有效的方式. C++语言的强大能力的体现在对程序员自定义数据类型的支持.C++语言主要的一个设计目标就是让程序员自定义的数据类型像内置类型一样好用. 一.自定义数据类型 数据类 ...

  7. C++语言中的类型(一)

    --分门别类是简化事物最有效的方式. 类型是C++语言的基础,对象类型决定了能对该对象进行的操作. 一.基本内置数据类型 C++预先定义的基本内置数据类型是构造世界万物的原子,数据类型告诉我们数据的意 ...

  8. MySQL中enum类型数据,要传入字符串

    问题来源:公司业务,某张表中一个字段定义为: enum('0','1','2','3','4','5','6','7','8','9','10') NOT NULL DEFAULT '0' 某天跑脚本 ...

  9. c++中各类型数据占据的字节长度

    c++中各种类型数据类型占据字节长度 首先罗列一下C++中的数据类型都有哪些: 1.整形:int.long 2.字符型:char.wchar_t 3.布尔型:bool 4.浮点型:float.doub ...

随机推荐

  1. mac bigsur 安装mysql步骤

    我首先下载的是mysql8.x,安装完后,在偏好设置里面,双击mysql图标,弹窗:未能载入偏好设置面板MySQL,重启无果,查攻略说是要安装5.7.x,在mysql官网上,下载5.7.29 强烈建议 ...

  2. xxx.app已损坏无法打开、来自身份不明的开发者解决办法

    在 Mac 上安装非 App Store 软件时,可能会遇到一些这样或那样的问题,这篇文章就 Mac 从 .dmg 安装软件时可能遇到的问题提一些解决方法. 状况一:双击 .dmg 安装软件出现以下情 ...

  3. MySQL基础学习——SQL对数据库进行操作、对数据库的表进行操作

    1.SQL对数据库进行操作: 创建数据库: 语法: create database 数据库名称 [character set 字符集 collate 字符集校对规则];字符集校对规则即所用字符集的数据 ...

  4. js中的特数值-null-undefined-NaN

    一.补充 1.js中的三大特殊数据:undefined.null.NaN NaN :非法的数值运算得到的结果 特殊之处: 是一个数值型数据,但不是一个数字 NaN不等于任何值,和任何数据都不相等,Na ...

  5. 学习JS的第四天

    一.循环 1.循环嵌套 1.一个循环内包含完整的另一个循环语句. 2.被包含的循环语句叫内循环,包含别的循环的循环语句叫外循环. 3.外循环每执行一次循环,内循环都会完全执行所有循环次数. 4.循环嵌 ...

  6. 全程精髓无废话,腾讯强推Redis深度笔记我粉了

    作为目前主流的NoSQL技术,redis在Java互联网中得到了非常广泛的使用,个时代码代码的秃头人员,对Redis肯定是不陌生的,如果连Redis都没用过,还真不好意思出去面试,指不定被面试官吊打多 ...

  7. 求求你们了,别再写满屏的 if/ else 了!

    为什么我们写的代码都是 if-else? 程序员想必都经历过这样的场景:刚开始自己写的代码很简洁,逻辑清晰,函数精简,没有一个 if-else,可随着代码逻辑不断完善和业务的瞬息万变:比如需要对入参进 ...

  8. 暑假算法练习Day2

    第二天啦!大家一起冲冲冲!! 1004 成绩排名 (20 分) 读入 n(>0)名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式: 每个测试输入包含 1 个测试用 ...

  9. 关于新手使用mpb开发代码的一些小知识

    mac 前端端口占用解决   1.查看8080端口,复制进程PID  lsof -i :8080 2.杀死进程 kill -9 「进程PID」   如果你的mac不能使用sudo解决办法   错误提示 ...

  10. [bzoj1122]账本

    简化问题:如果没有2操作,答案是多少贪心:修改-一定修改最前面的,修改+一定修改最后面的,正确性显然而通过1操作,要完成两步:1.让最终结果为q:2.让前缀和非负,通过贪心可以获得最小值(具体来说,假 ...