xiaohongmao663832
acodignaks
采纳率66.7%
2020-01-21 10:26

printf("%f",5/3)的输出为什么是0.000000

已采纳

不懂就要问.

环境为:Win10+vs2015

执行代码如下:

printf("%f\n", 5 / 3);                           //0.000000
printf("%f\n", (double)(5 / 3));            //1.000000
printf("%d\n", 5 / 3);                          //1

问题:
为什么第一行的代码得到的结果会是0.000000?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • sinat_18811413 鸟哥01 1年前

    printf 不会做类型转换,格式%f必须对应浮点数,否则结果未知

    点赞 1 评论 复制链接分享
  • weixin_40639596 weixin_40639596 1年前

    事实证明,printf("%f", 任意整数)都是0.0000,这个是类型错误导致的,具体为什么这么解析,需要看源代码。
    图片说明

    点赞 1 评论 复制链接分享
  • qq_36911145 封印di恶魔 1年前

    我觉得可能是类型不同的问题,只是猜测,你试试用浮点型输出 int long byte类型的 1 试试
    也可能是int 和 float都是4字节 32位二进制 类型不同他们每位代表的意思不同,同样一串32位二进制通过另一种方式输出识别方式不同

    点赞 评论 复制链接分享
  • qq_38770502 坚持学习不能松懈 1年前

    5/3.0 你在试试看

    点赞 评论 复制链接分享