在perl里,$value = 9.01e+21 + 0.01 - 9.01e+21; print ("first value is ",$value,"\n");其输出结果为first value is 0 为什么是0而不是0.01呢,书上说道“浮点寄存器通常不能精确地存贮浮点数,从而产生误差,在运算和

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/07 16:40:47

在perl里,$value = 9.01e+21 + 0.01 - 9.01e+21; print ("first value is ",$value,"\n");其输出结果为first value is 0 为什么是0而不是0.01呢,书上说道“浮点寄存器通常不能精确地存贮浮点数,从而产生误差,在运算和
在perl里,$value = 9.01e+21 + 0.01 - 9.01e+21; print ("first value is ",$value,"\n");
其输出结果为first value is 0 为什么是0而不是0.01呢,书上说道“浮点寄存器通常不能精确地存贮浮点数,从而产生误差,在运算和比较中要特别注意.指数的范围通常为-309到+308.“,寄存器我知道是什么东东.其输出结果为first value is 0 为什么是0而不是0.01呢

在perl里,$value = 9.01e+21 + 0.01 - 9.01e+21; print ("first value is ",$value,"\n");其输出结果为first value is 0 为什么是0而不是0.01呢,书上说道“浮点寄存器通常不能精确地存贮浮点数,从而产生误差,在运算和
寄存器是CPU里面的一个存储装置(有很多个,每个的意义都是不一样的,有的用来放地址,有的用来放数据,存取速度非常快,用来做运算操作数的临时存放地.让cpu中的运算器随时能取到)
应该是$value = 9.01e+21 + 0.01 - 9.01e-21吧
浮点寄存器通常不能精确地存贮浮点数是因为 浮点的存储方式造成的
举个例子 为了表示-309 到 +308 次方的范围空间, 字节一部分是用来存小数,另外一部分用来存指数,指数的大小表明小数点的位置,所以称为浮点. 而存小数的那部分是有限的,比如0.1234234234,就会被截断,表示为123*10 -3次方,前面存123,后面存-3
关键一句话,就是为了节省空间,而放弃了精度.