当前位置: 首页 > news >正文

沧州地区做网站福州鼓楼区建设局网站

沧州地区做网站,福州鼓楼区建设局网站,陕西省建设网站 五大员过期,网站不支持下载的视频怎么下载假设存在两个理论结果一致的公式b和b1: b和b1的计算方式理论上计算得出的结果是一样的,编译器打印出来肉眼看也是一样的,系统判定不一样原因如下: 即使double有着很高的精度(64位),但是机器对最后一位的处理必定是四舍…

假设存在两个理论结果一致的公式b和b1:

b和b1的计算方式理论上计算得出的结果是一样的,编译器打印出来肉眼看也是一样的,系统判定不一样原因如下:
即使double有着很高的精度(64位),但是机器对最后一位的处理必定是四舍五入的


遇到无限循环or无限不循环小数这样的计算结果,若将该结果保存在某个double变量中用于后续计算,计算结果的判断可能会出错

那么有以下几种处理方式
(1)将double强制转换为string,保留精度在十进制0.000001
(2)检测差值,当差值小于0.000001时认为一致
(3)推荐的办法:在计算公式中保证不包含某个double型的变量k(该k可能是经过系统末尾四舍五入取值的无限小数)
在这里插入图片描述


        【将下面的代码保存为cpp文件并运行可以看到这种出错的情况】
/*【问题描述】
在平面直角坐标系中,两点可以确定一条直线。如果有多点在一条直线上,那么这些点中任意两点确定的直线是同一条。
给定平面上2x3个整点{(xv)0≤x<20≤у<3x€Zy€Z},即横坐标是0到1(包含0和1)之间的整数、纵坐标是0到2(包含0和2)之间的整数的点。
这些点一共确定了11条不同的直线。给定平面上20x21个整点1(xy)0≤x<200≤у<21x€Z,y€Z},即横坐标是0到19(包含0和19)之间的整数、纵坐标是0到20(包含0和20)之间的整数的点。
请问这些点一共确定了多少条不同的直线 ?*/
# include<iostream>
# include<map>
# include<set>
# include<string>
#define row 5
#define col 3
using namespace std;int main() {map<pair<double, double>, int> m = {};int ans = 0;for (int x1 = 0; x1 < row; x1++)for (int y1 = 0; y1 < col; y1++)for (int x2 = 0; x2 < row; x2++)for (int y2 = 0; y2 < col; y2++) {if (x1 == x2 || y1 == y2)   continue;double k = 1.0*(y2 - y1) / (x2 - x1)*1.0;double b = (y1 - k * x1);double k1 = (y1 - y2) * 1.0 / (x1 - x2);double b1 = ((x2 * y1 - x1 * y2) * 1.0) / ((x2 - x1) * 1.0);/*存在明显的问题,b和b1的计算方式理论上计算得出的结果是一样的,打印出来肉眼看也是一样的,但是系统判定不一样:即使double有着很高的精度(64位),但是机器对最后一位的处理必定是四舍五入的;如遇到无限循环or无限不循环小数这样的计算结果,若将该结果保存在某个double变量中用于后续计算,计算结果的判断可能会出错。【运行该代码可以看到这种出错的情况】那么有以下两种处理方式:(1)将double强制转换为string,保留精度在十进制0.000001(2)检测差值,当差值小于0.000001时认为一致(3)推荐的办法,在计算公式中保证不包含某个double型的变量k(该k可能是经过系统末尾四舍五入取值的无限小数)*/if (b != b1) {printf("点A1:(%d,%d),\t点A2:(%d,%d)\n", x1, y1, x2, y2);printf("b公式计算出的截距:\t十六进制:%x\t浮点型:%lf\n", b,b);printf("b1公式计算出的截距:\t十六进制:%x\t浮点型:%lf\n", b1,b1);string notice = b == b1 ? "b==b1" : "b!=b1";cout << notice << endl;cout << " 将其转换成string再做比较: " << endl;string str = to_string(b);string str1 = to_string(b1);cout << "str_b:\t" << str << endl;cout << "str_b1:\t" << str1 << endl;string note = str == str1 ? "str_b==str_b1" : "str_b!=str_b1";cout << note << endl << endl;}if (m[{k, b}] == 0) {m[{k, b}] = 1;//printf("a:(%d,%d),b:(%d,%d) ———— 斜率:%.2f\t截距:%.2f\n\n", x1,y1,x2,y2,k,b);ans++;}}cout << "由于上述问题导致的结果错误:" << ans + row + col << endl;cout << "__________________________________________________________________\n\n\n" << endl;/*下面是正确的计算方式*/set<pair<double, double> >a;            // 直接使用set去重for (int x1 = 0; x1 < row; x1++) {for (int y1 = 0; y1 < col; y1++) {for (int x2 = 0; x2 < row;x2++) {for (int y2 = 0; y2 < col;y2++){if (x1 == x2 ) {    //避免斜率不存在,也可以在条件中加上 || y1 == y2 ,但结果要加上colcontinue;}double k = (y1 - y2) * 1.0 / (x1 - x2);double b = ((x2 * y1 - x1 * y2) * 1.0) / ((x2 - x1) * 1.0);     //不在计算中包含double类型的变量a.insert(make_pair(k, b));}}}}cout << "线条的真正个数" << a.size() + row << endl;return 0;
}
http://www.yayakq.cn/news/933273/

相关文章:

  • wordpress 微软seo自媒体运营技巧
  • 淘宝导购网站建设企业如何注册网站
  • 现在的网站建设用什么语言网站建设及运营 多少钱
  • 服装网站设计策划书范文怎样下载字体到wordpress
  • 站群软件公司网站建设ppt
  • 如何把做的网站变成链接wordpress去除分类链接
  • 免费的设计网站有哪些商城网站源码下载
  • 手机网站seo教程下载wordpress 文章样式
  • 个人网站 组建免费傻瓜室内装修设计软件
  • 湛江海田网站建设招聘wordpress wp posts
  • 江门企业自助建站系统十大it外包公司
  • ps怎么做网站页面利用jsp做网站
  • 嘉定品牌网站建设wordpress wp json
  • 帝国网站整站迁移做的好的企业网站
  • 网站做游戏吗北京市建设工程信息网知名中项网
  • 网站建设推广机构网站上传不了图片不显示不出来吗
  • 如何提高网站点击率怎么做深圳今天最新招聘信息
  • 网站制作价格与售后视频网站开发环境有哪些php
  • 台州网站建设技术外包做海外视频的网站有哪些
  • jsp网站建设论文商务网站建设项目的技术可行性
  • 网站建设销售人员培训教程制作网站的发展前景
  • 好网站开发策划要求上海鹭城建设集团网站
  • wordpress可视化建站网站建设成本明细
  • 希腊网站 后缀山西响应式官网建设平台
  • 国外做多媒体展览的网站四川工程信息网官网
  • 网站禁止被采集网站改版案例
  • 怎么样建设一个网上教学网站哪个视频网站做自媒体
  • 湛江企业模板建站免费域名注册申请
  • 外贸网站镜像中国建设银行招聘
  • wordpress添加网站图标廊坊网站推广