C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何重现C双舍入问题大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
浮点精度在C中是有限的,对于新手程序员来说,在舍入值时经常会遇到麻烦.

在教学生时,通常有用的是演示浮点精度数舍入问题.您知道在所有C编译器上一致地证明这种舍入问题有哪些可能的方法

解决方法

首先,我们应该注意,在IEEE754浮点中,1.5,0.5和2.0都是精确表示的.因此,在这个具体的例子中,1.5永远不会是1.499999999999.

如此,我认为要做的是让你的学生接触数字不完全可以代表.说,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,请注明来意。