C语言中for中浮点数精度的一个疑问double x = 1.0;for( ; x < 11 ; x += 1.0) 》这个循环是可以结束.double x =0.0;for( ; x = 2.0; x += 0.2) 》这个循环是无限的.书里的解释是:“0.2没有浮点数形式的二进制精

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 22:44:02
C语言中for中浮点数精度的一个疑问double x = 1.0;for( ; x < 11 ; x += 1.0) 》这个循环是可以结束.double x =0.0;for( ; x = 2.0; x += 0.2) 》这个循环是无限的.书里的解释是:“0.2没有浮点数形式的二进制精

C语言中for中浮点数精度的一个疑问double x = 1.0;for( ; x < 11 ; x += 1.0) 》这个循环是可以结束.double x =0.0;for( ; x = 2.0; x += 0.2) 》这个循环是无限的.书里的解释是:“0.2没有浮点数形式的二进制精
C语言中for中浮点数精度的一个疑问
double x = 1.0;
for( ; x < 11 ; x += 1.0) 》这个循环是可以结束.
double x =0.0;
for( ; x = 2.0; x += 0.2) 》这个循环是无限的.
书里的解释是:“0.2没有浮点数形式的二进制精确表示”.
1)double浮点数可以精确到小数后很多位.
2)“0.2没有浮点数形式”和“二进制精确”这两句话都无法看明白.
我猜,是不是就是因为double后面有太多位0,和0.2”不匹配“,所以x!=2.0这个条件无效,造成了没有结束条件,所以成了无限循环?

C语言中for中浮点数精度的一个疑问double x = 1.0;for( ; x < 11 ; x += 1.0) 》这个循环是可以结束.double x =0.0;for( ; x = 2.0; x += 0.2) 》这个循环是无限的.书里的解释是:“0.2没有浮点数形式的二进制精
计算机存储浮点数时,是按IEEE754标准来存储的.简单说是以二进制科学计数法来存储的.
一个double型数据,在存储时,占8个字节,其存储格式为:符号位一位,指数位11位,尾数(小数)位52位,共计64位.
一个小数转换成二进制小数时,采用的是乘2取整法,如:0.2 =
0.2*2=0.4
0.4*2=0.8
0.8*2=1.6
0.6*2=1.2
0.2*2=0.4 到此开始循环,所以0.2=0.001100110011..
这是一个循环数,double的存储形式,导致不可能把这个循环小数全表示出来,因此不可能精确表示出0.2这个数!

C语言中for中浮点数精度的一个疑问double x = 1.0;for( ; x < 11 ; x += 1.0) 》这个循环是可以结束.double x =0.0;for( ; x = 2.0; x += 0.2) 》这个循环是无限的.书里的解释是:“0.2没有浮点数形式的二进制精 C语言中单精度浮点数和双精度分别如何表示?有什么差别? C语言中,对浮点数求绝对值的库函数是什么?就是怎么对一个浮点数求绝对值 C语言中什么是正确的浮点数 C语言中 小数和浮点数的区别 在C语言中怎样表示一个既有整数又有浮点数的数组 在C语言中单精度浮点和双精度浮点小数点后有几位小数还有在VFP中双精度和单精度分别有几位小数 C语言中,编写一个求浮点数绝对值的函数,在主函数中输入一个浮点数,输出绝对值(谢谢) 定义一个类,该类中能实现分别求两个整数、双精度浮点数、单精度浮点数中的较小数的功能 .在线等. c语言中浮点数四舍五入 .保留一个浮点数小数点后的6位,第3位要四舍五入.如 1.1234.567到1234.570000 C中 如何将浮点数转化成整数,如何判定一个浮点数是否等于其整数部分?C语言中 如何将浮点数转化成整数,如何判定一个浮点数是否等于其整数部分? C语言中位运算不能用于浮点数,什么是浮点数 “浮点数”在C语言中是什么意思?float 在C语言中,如何将一个浮点数变换成整数? C语言中怎样判断输入的是整数还是浮点数 C语言中怎样判断输入的是整数还是浮点数 在C语言中可不可以简单的把浮点数看做小数? 什么是定点数、浮点数;什么是双精度、单精度?在学c语言,关于数据类型,不太懂,