Anonymous 发表于 2021-7-19 10:43:57

实型变量 1.0/3*3为什么编译后还等于1

#include<stdio.h>

void main()
{
   printf("%f\n",1.0/3*3);
}
结果显示:1.000000

青出于蓝 发表于 2021-7-19 10:58:59

1除以3再乘3就是等于1呀
%f保留小数点后6位
所以显示1.000000
欢迎追问

jackz007 发表于 2021-7-19 11:41:37

      你想让它等于几,请问?

万千只cnm 发表于 2021-7-19 11:52:42

你想等于0.999999吗
1.0/3*3是实型运算,与你学过的数学运算是一致的,输出结果是1.000000

xhtxhtxht 发表于 2021-7-20 10:39:34

是这样的,C语言的计算整数型和浮点型是不一样的。
#include <stdio.h>

int main()
{
        printf("%d\n",1/3*3);
        printf("%d\n",1*3/3);
        printf("%f\n",1*3/3);
        printf("%f\n",1.0*3/3);
}


你先除以3在乘以3,整形会吧1/3小数位丢弃成为0,0*3=0.
浮点型会保留小数位的。
你那个是浮点型
《C程序设计语言》里有 哪一页忘了
输出如下
PS D:\xht\Desktop> ./1
0
1
0.000000
1.000000
PS D:\xht\Desktop>


页: [1]
查看完整版本: 实型变量 1.0/3*3为什么编译后还等于1