当前位置: 首页 > 知识库问答 >
问题:

我的程序结果不合逻辑[重复]

皇甫智明
2023-03-14

将浮点数转换为十进制数。例如,如果输入为12.345,则输出应为12345

...所以这是我的解决方案:

double d=0;
cout<<"Enter a double : ";
cin>>d;

while(d-(int)d > 0.)
    d*=10;

cout<<"Result : "<<d<<endl;

我认为这个算法理论上是正确的,但实际上有些值对我不起作用!!

问题出在哪里,解决方案是什么,使我的程序正确工作?

共有1个答案

裴浩歌
2023-03-14

问题是浮点运算中的舍入问题:你不能用二进制表示十进制数所能表示的所有数字。

作为一个例子,想象一下你在1/3上以3的因子运行你的算法。1/3在十进制中由0.3333表示,因此您的算法将计算如下:

 0.3333 * 3 =  0.9999
 0.9999 * 3 =  2.9997
 2.9997 * 3 =  8.9991
 8.9991 * 3 = 26.9973
26.9993 * 3 = 80.9919

正如你所看到的,小数部分并没有像你预期的那样消失。

 类似资料:
  • 几天前,我发布了这个问题,来自Azure IOT中心的短信 我曾尝试实现建议的logic app,我的问题是logic app没有通过服务总线接收任何消息,事实上没有消息到达服务总线。当我尝试在logic应用程序中运行触发器时,它会弹出一个对话框,告诉我“When_a_message_is_received_in_a_queue”。当我运行logic应用程序时,它说工作流程在几分钟后超时。 我复制

  • 20231022 10:00-10:30am 美团优选商品品类运营hr面 一共2面,这是最后一面。 整体感受:HR小姐姐敬业又专业,好像身体不舒服嗓子沙哑还在周日面试,介绍整体组织架构十分细致。 hr先进行了自我介绍,然后开始喊我: 1、自我介绍 2、你的过往经历中,你自己主动去做的职责之外的事情,举个例子 hr对整体组织架构进行了详细介绍,反问环节+面评。

  • 本教程经常有提及综合这个词语。或者说有些逻辑不能综合成实际电路,或者说有些逻辑设计综合后的电路会有一些安全隐患。本章就简单介绍下逻辑综合的相关知识,仅从理论层次和普遍认知的角度来阐述。待那个懵懂求知少年变成中年秃顶大叔,再来介绍逻辑综合的具体实践。好像也没有多少时日了(手动狗头)。 基本概念 综合,就是在标准单元库和特定的设计约束基础上,把数字设计的高层次描述转换为优化的门级网表的过程。标准单元库

  • 每条链有独立的数据存储文件 每个智能合约都独立的数据存储空间 每个智能合约可以创建多个数据表

  • Adding application logic (添加应用程序逻辑) 构建一个应用时,通常需要实现自定义逻辑来处理数据,并响应客户端请求之前执行其他操作. 在 Loopback 中,可以通过以下三种方法实现. 添加 model 逻辑 - 使用 remote methods,remote hooks 和 operation hooks. 启动脚本 - 目录 /server/boot 中的文件,在应

  • 本文向大家介绍Android程序锁的实现以及逻辑,包括了Android程序锁的实现以及逻辑的使用技巧和注意事项,需要的朋友参考一下 本项目是一个比较有趣的项目源码,可以给其他项目加锁,程序锁的原理是一个“看门狗”的服务定时监视顶层activity,如果activity对应的包名是之前上锁的应用程序的,则弹出一个页面要求输入解锁密码。 效果如下: 1.基本思路 ①.创建已加锁应用的数据库(字段:_i