C语言中的除法[重复]
Posted
技术标签:
【中文标题】C语言中的除法[重复]【英文标题】:Division in C language [duplicate] 【发布时间】:2021-12-11 07:45:45 【问题描述】:大家好,希望你们一切顺利,我是 C 语言的新手,我只需要问一个基本问题,即当我在 C 中像这样除数时:
#include<stdio.h>
main()
float a = 15/4;
printf("%.2f", a);
除法发生,但答案以 3.00 之类的形式出现(这是不正确的,它没有计算余数) 但是当我这样编程时:
#include<stdio.h>
main()
float a = 15;
float b = 4;
float res = a/b;
printf("%.2f", res);
这个方法给了我正确的答案。所以我想问一下这两个程序的黑白差异背后的原因,为什么第一种方法不起作用,为什么第二种方法起作用?
【问题讨论】:
15/4
是整数(即截断)除法,因为两个操作数的类型都是 int
。在 C 中,您得到的除法类型取决于操作数的类型。在某些编程语言中,截断除法和小数除法本身具有不同的运算符名称;在 C 中,它们共享相同的标记,编译器通过一种运算符重载来解析(尽管 C 没有用户可定义的运算符重载,但它具有 de facto 内置重载)。
两个答案都是正确的。两个整数之间的“/”符号表示整数除法。
呃,我把它选为副本,却没有看到我投的副本是给 python 的!
谢谢大家,我得到了答案!
【参考方案1】:
在这个表达式中
15/4
两个操作数都有整数类型(更准确地说是int
类型)。于是进行了整数运算。
例如,如果至少一个操作数具有浮点类型(float 或 double)
15/4.0
或
15/4.0f
那么结果将是一个浮点数(在double
类型的第一个表达式和float
类型的第二个表达式中)
在这个表达式中
a/b
两个操作数都有浮点类型(float
类型)。所以结果也是一个浮点数。
【讨论】:
我明白了,我明白了。谢谢! @Mac 完全没有。不客气。:)【参考方案2】:当您将变量声明为浮动时,您会自动转换他从等式中获得的值。 例如: Float a = 2/4 这就像写 float a = float(equation)。 小心, 奥利
【讨论】:
以上是关于C语言中的除法[重复]的主要内容,如果未能解决你的问题,请参考以下文章