OliV_Ia 2021-10-13 13:43 采纳率: 83.3%
浏览 17
已结题

为什么输入0.01显示的是35秒?

 
#include<stdio.h> 
int main()
{
    float input_number ;
    int hours,minutes,seconds;
    printf("How many hours:");
    scanf("%lf",&input_number);
    hours=(int)input_number;
    minutes=(int)((input_number-hours)*60);
    seconds=((input_number-hours)*60-minutes)*60;
    printf("%dhours%dminutes%dseconds",hours,minutes,seconds);
    return 0;
}
 




  • 写回答

1条回答 默认 最新

  • qfl_sdu 2021-10-13 13:48
    关注

    scanf("%lf",&input_number);这里改成scanf("%f",&input_number);
    float类型用%f,double类型用%lf

    1秒等于1/3600小时,36秒等36/36000=0.01小时
    应该是计算过程中损失了精度

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月27日
  • 已采纳回答 1月19日
  • 创建了问题 10月13日

悬赏问题

  • ¥15 vite打包后,页面出现h.createElement is not a function,但本地运行正常
  • ¥15 Java,消息推送配置
  • ¥15 Java计划序号重编制功能,此功能会对所有序号重新排序,排序后不改变前后置关系。
  • ¥15 关于哈夫曼树应用得到一些问题
  • ¥15 使用sql server语句实现下面两个实验(需要代码和运行结果截图)
  • ¥20 用web解决,要给我一个完整的网页,符合上述的要求
  • ¥20 求个sql server代码和结果的图 两道题
  • ¥15 银河麒麟操作系统无法使用U盘
  • ¥100 寻找:光电二极管电路设计服务
  • ¥15 YOLOv5改进后的结构图