c语言取整和取余:
示例
public class Demo_1 {undefined
public static void main(String args) {undefined
Scanner sc = new Scanner(System.in)
System.out.print("请输入要判断的数字(五位数):")
int num = sc.nextInt()
sc.close()
//截取最后一位数
int a = num % 10
//截取第一位数
int b = num / 10000
//截取第四位数
int c = num % 100 / 10
//截取第二位数
int d = num / 1000 % 10
System.out.println(a + "," + b + "," + c + "," + d)
boolean b1 = (a == b)
boolean b2 = (c == d)
if(b1 &&b2) {undefined
System.out.println(num + "是回文数")
}else {undefined
System.out.println(num + "不是回文数")
}
}
}
1.直接赋值给整数变量
int i = 3.5或i = (int) 3.5。
这样的方法采用的是舍去小数部分。
2、整数除法运算符‘/’取整
‘/’本身就有取整功能(int / int),可是整数除法对负数的取整结果和使用的C编译器有关。
参与运算量均为整型时,结果也为整型,舍去小数。如果运算量中有一个是实型,则结果为双精度实型。
printf("%d,%d\n",10/3,-10/3)
printf("%f,%f\n",10.0/3,-10.0/3)
c语言有以下几种取整方法:
1、直接赋值给整数变量。如:
int
i
=
2.5
或
i
=
(int)
2.5
这种方法采用的是舍去小数部分,可以用于你的问题。
2、c/c++中的整数除法运算符"/"本身就有取整功能(int
/
int),而下面介绍的取整函数返回值是double。整数除法对正数的取整是舍去小数部分,但是整数除法对负数的取整结果和使用的c编译器有关。
3、使用floor函数。floor(x)返回的是x的整数部分。如:
floor(2.5)
=
2
floor(-2.5)
=
-3
4、使用ceil函数。ceil(x)返回的是不大于x的最小整数。如:
ceil(2.5)
=
2
floor和ceil对于正数没有区别,但是对于负数结果不同。
在 C 语言中,取整的规则取决于使用的取整函数。
如果使用内置的取整函数 floor(),则取整的规则为向下取整,即取最大的整数,小于等于原数。例如:
floor(3.14) # 输出 3
floor(-3.14) # 输出 -4
如果使用内置的取整函数 ceil(),则取整的规则为向上取整,即取最小的整数,大于等于原数。例如:
ceil(3.14) # 输出 4
ceil(-3.14) # 输出 -3
如果使用内置的取整函数 round(),则取整的规则为四舍五入,即取最接近原数的整数。例如:
round(3.14) # 输出 3
round(3.5) # 输出 4
round(-3.14) # 输出 -3
round(-3.5) # 输出 -4
注意:floor() 和 ceil() 函数需要使用 math.h 头文件。
#include <math.h>
另外,还可以使用类型转换运算符(即 (int) 运算符)将浮点数强制转换成整型,实现取整的效果。例如:
(int)3.14 # 输出 3
(int)-3.14 # 输出 -3
但是这种方法不会准确地处理负数
(int)-3.5 # 输出 -3(不是正确的答案)