专业单位网站建设,购买域名要多少钱,wordpress数据录入平台,男士手表网站点击蓝字关注我们来源于网络#xff0c;侵删一、引例看下下面这段代码#xff0c;会输出什么结果呢#xff1f;double x 0;for (int i 0; i 10; i) {x 0.1;}printf(%d\n, x 1);输出如下#xff1a;0引起这种反差的原因就是浮点误差#xff0c;浮点数…点击蓝字关注我们来源于网络侵删一、引例看下下面这段代码会输出什么结果呢double x 0;for (int i 0; i 10; i) {x 0.1;}printf(%d\n, x 1);输出如下0引起这种反差的原因就是浮点误差浮点数在存储的时候是有精度误差的所以进行浮点数等于判定的时候不能用 ‘’那么接下来我们看下浮点数的表示二、浮点数表示1、IEEE 754IEEE二进制浮点数算术标准IEEE 754是20世纪80年代以来最广泛使用的浮点数运算标准为许多CPU与浮点运算器所采用。这个标准定义了表示浮点数的格式包括负零 -0与反常值一些特殊数值无穷Inf与非数值NaN以及这些数值的“浮点数运算符”。基于这个规定任何浮点数都可以表示成如下形式2、单精度和双精度C 中两种浮点数float 和 double分别代表单精度和双精度单精度尾数占23个比特位指数占8个比特位双精度尾数占52个比特位指数占11个比特位由于结构相同这里只介绍单精度浮点数3、单精度浮点数表示法如图为 32位 的浮点数的二进制表示总共 32 个比特位取值 0 或 1S 在最高位代表符号负数为1正数为0E 为从高到低的第 30 - 23 位总共 8 位代表指数偏移存储的是加上了 127 以后的值原因是指数有可能是负数F 代表二进制科学计数法的尾数总共 23 位因为是科学计数法所以开头一定是 “1.” 开头所以尾数有效位数为 24 位4、举例说明【示例】 对于−18.375这个浮点数求出它的二进制存储格式5、代码测试C/C 中可以用如下代码对浮点数取地址转换成整型后输出整数的二进制表示float a -18.375;unsigned int v *((unsigned int *)a);三、浮点数判定1、精度定义#define eps 1e-62、相等判定介于浮点数的表示方式不能用 ‘’ 进行相等判定必须将两数相减取绝对值以后根据结果是否小于某个精度来判定两者是否相等bool EQ(double a, double b) { // EQualreturn fabs(a - b) eps;
}3、不相等判定‘不相等’ 就是 ‘相等’ 的 ‘非’取反bool NEQ(double a, double b) { // NotEQualreturn !EQ(a, b);
}4、大于等于判定‘大于等于’ 就是 ‘大于 或 等于’ 的意思需要拆分成如下形式bool GET(double a, double b) { // GreaterEqualThanreturn a b || EQ(a, b);
}5、小于等于判定‘小于等于’ 就是 ‘小于 或 等于’ 的意思需要拆分成如下形式bool SET(double a, double b) { // SmallerEqualThanreturn a b || EQ(a, b);
}6、小于判定‘小于’ 就是 ‘大于等于’ 的 ‘非’需要拆分成如下形式注意千万不能直接用 a bbool ST(double a, double b) { // SmallerThanreturn a b NEQ(a, b);
}7、大于判定‘大于’ 就是 ‘小于等于’ 的 ‘非’需要拆分成如下形式注意千万不能直接用 a bbool GT(double a, double b) { // GreaterThanreturn a b NEQ(a, b);
}如果你年满18周岁以上又觉得学【C语言】太难想尝试其他编程语言那么我推荐你学Python现有价值499元Python零基础课程限时免费领取限10个名额▲扫描二维码-免费领取戳“阅读原文”我们一起进步