F–Social 发表于 2020-10-1 22:10:08

-1.5的输出问题

本帖最后由 F–Social 于 2020-10-1 22:10 编辑

那啥,萌新的我还不是很会描述遇到的问题,请各位多多见谅OvO

就是书上的一道题,写出解方程 2x + 3 = 0 的算法。

然后我就想了一下,aX + b =c 嘛,那 X 不就等于 (c - b) / a 嘛,然后我就写了这些代码:
#include <stdio.h>
int main ()
{
        int a,b,c;
       
        int x;
       
        printf("please enter three number : ");
        scanf("%d %d %d",&a,&b,&c);
        x = (c- b) / a;
        printf("x = %d",x);
        return 0;
}


然后。。。。
运行结果如下:
               
          please enter three number : 2 4 0
          x = -2

       please enter three number : 2 3 0
       x = -1
    (⊙o⊙)?
我就好奇第一个测试的时候解出来的结果时对的,但写原题的时候就错了,答案应该是-1.5,然后我就把占位符改成 %.2f 然后运行结果是X = 0.00
然后我就懵了,请各位多多指教,谢了!ovo
       

巴巴鲁 发表于 2020-10-1 22:11:54

把a,b,c,x定义为float型
在C语言中,1/3=0、1.0/3才等于0.3333

F–Social 发表于 2020-10-1 22:15:10

巴巴鲁 发表于 2020-10-1 22:11
把a,b,c,x定义为float型
在C语言中,1/3=0、1.0/3才等于0.3333

哇偶,可以了,那可以多问一下,这是为啥吗?数据类型没好好听课的我

风过无痕1989 发表于 2020-10-2 01:50:01

F–Social 发表于 2020-10-1 22:15
哇偶,可以了,那可以多问一下,这是为啥吗?数据类型没好好听课的我

整形除法返回的是整数部份,没有四舍五入的

巴巴鲁 发表于 2020-10-2 07:59:50

F–Social 发表于 2020-10-1 22:15
哇偶,可以了,那可以多问一下,这是为啥吗?数据类型没好好听课的我

数据类型涉及隐式类型转化:double>float>int>short>char
1/3都是整型,结果也是整型,只保留整数位,即0
但1.0/3是浮点型除整型,结果也就是浮点型(参考第一行),所以就是0.333333

F–Social 发表于 2020-10-2 08:04:27

风过无痕1989 发表于 2020-10-2 01:50
整形除法返回的是整数部份,没有四舍五入的

好的好的,谢谢啦

F–Social 发表于 2020-10-2 08:05:13

巴巴鲁 发表于 2020-10-2 07:59
数据类型涉及隐式类型转化:double>float>int>short>char
1/3都是整型,结果也是整型,只保留整数位 ...

嗯嗯,好的好的,谢啦
页: [1]
查看完整版本: -1.5的输出问题