作业帮 > 综合 > 作业

doouble d1=8e+25,d2=0.000001; printf("%d\n“,d1==d1-d2);为什么输出

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/09 16:14:48
doouble d1=8e+25,d2=0.000001; printf("%d\n“,d1==d1-d2);为什么输出1?
d1==d1-d2
这是一个判断语句 你应该知道
double的精度有限
d1很大 d1-d2基本不变 (精度问题)
所以 d1 ==d1-d2 是正确的 返回1
再问: 我觉得与范围有关系,与int型的范围有关呢?
再答: 不是的 double的有效数字就只有15~16位 超过了 多余的部分他就不管了
再问: 那double型的d1应该是多少?d1-d2是多少?
再答: d1=8e^25呗 d1-d2是8e^25-0.000001 但是有效位数就前面的15~16位 假如有效位数为3 就像1.20122和1.20231是一样大的哦
再问: 有效位要不要4舍5入?d1=...,d1-d2=...,应该精确到多少?很感谢
再答: double 的范围是10^-307~10^307 所以d1=8e^25 d1-d2=8e^25-0.000001 对于double类型来说 这2个值是一样大的