免费的猫 2022-06-24 12:36 采纳率: 100%
浏览 37
已结题

操作符*运算结果为什么会这样啊

#include<stdio.h>
int main()
{
float a = 9.1* 2;
printf("%f", a);
return 0;
}
问一下,为什么输出的结果不是18.200000,而是18.200001啊

  • 写回答

2条回答 默认 最新

  • ...404 Not Found 2022-06-24 13:23
    关注

    浮点数设有精度。
    看一小段C语言程序:

    int main()

    {

    float x = 1.3;

    x = x - (int)x;

    int i = (int)(x*10);

    return ;

    }

    在你心目中, 变量 I 是怎样的结果?

    如果你理所当然地认为是3的话, 那么你就错了~~~

    实际结果应该是2. 为什么?

    简而言之, x在内存的值并不是精确的1.3, 实际上可能是1.29999999......

    因为在计算机组成原因中有说过, 浮点数无法被准确地表示出来, 只能是一个非常精确的值..

    #include<stdio.h>
    int main()
    
    {
        double x = 1.0000003;
    
        x = x - (int)x;
    
        int i = (int)(x * 10000000);
        printf("%d", i);
        return;
    
    }
    
    

    浮点数都有精度,只是double类型更精确些,当数据足够小时,结果仍然为2,并非float特性

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月2日
  • 已采纳回答 6月24日
  • 创建了问题 6月24日

悬赏问题

  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样