大佬教程收集整理的这篇文章主要介绍了如何重现C双舍入问题,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在教学生时,通常有用的是演示浮点精度数舍入问题.您知道在所有C编译器上一致地证明这种舍入问题有哪些可能的方法?
话虽如此,我认为要做的是让你的学生接触数字不完全可以代表.说,1.1.
这是一个示例程序:
#include <iostream> #include <iomanip> int main() { std::cout << std::setprecision(30); double d1(1.1); std::cout << d1 << "\n"; double d2(11); double eps = d2/10 - d1; std::cout << d2 << "\n"; std::cout << eps << "\n"; bool equal = (d1 == d2); std::cout << equal << "\n"; }
也许你可以通过这个程序,小心地说d1和d2都大约等于1.1.
对于高年级学生,你可以通过派系二进制算术,看看为什么1/2是可表示的,但是1/10不是.
编辑:我认为将点回归的方法是将重复的小数部分与重复的二进制分数进行比较.向学生显示十进制的1/7.在董事会做长期分工.指出你不能完全使用有限资源写下1/7.然后,要么向他们展示如何将1/10作为二进制分数写入,要么告诉他们不能使用有限资源写下它.
指出浮点数是有限的(32位),双精度数是有限的(64位).也许引入鸽子校长,并说你不能代表有限单词长度的无限集合(如所有有理数).
无论您尝试什么,请在这里报告,并告诉我们它是如何工作的.
以上是大佬教程为你收集整理的如何重现C双舍入问题全部内容,希望文章能够帮你解决如何重现C双舍入问题所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。