搜了半天C++如何取小数部分,都写得*,一点不是我想要的答案。
一、求解小数部分
假设:定义变量,原来的数originNum,整数部分intNum,小数部分fNum
int intNum = int(originNum);
fNum = originNum - intNum;
//总成一句
fNum = originNum - int(originNum);
例:
//想获取2.3的小数部分
double originNum= 2.3;
int intNum = int(originNum); //b=2,(隐式类型转换,将浮点数转换为整数,小数部分被舍弃)
float fNum = originNum - intNum; // b=0.3
二、除法的讲解
我看还有人这样求整数部分的:
int 整数部分 = 原来的数/1;
可以得出一个结论,能写出上面表达式的人一定对该语法了解不深。
我为你解惑:
在计算机编程中,除法操作通常分为整数除法和浮点数除法两种。
1.整数除法
整数除法是指对两个整数进行除法运算,结果仍然是整数。如果除法结果有小数部分,小数部分将
被舍弃,只保留整数部分。例如,5除以2的整数除法结果是2,而不是2.5。
2.浮点数除法
浮点数除法则是对浮点数进行除法运算,结果可以是带有小数部分的浮点数。浮点数除法保留了除
法结果的小数部分,因此可以得到更精确的结果。例如,5.0除以2.0的浮点数除法结果是2.5。
所以:
对于表达式 int 整数部分 = 原来的数/1;
其中的 原来的数/1 得到应该还是保留小数的浮点数(数据类型为float),之所以能得到整数部
分,功劳全是 变量名 前的数据类型,默默的将等号右边的浮点型转为了整型(隐式类型转换,将
浮点数转换为整数,小数部分被舍弃)。
三、补充:
C++取模运算
C++中没有直接支持浮点数的取模运算符。如果需要对浮点数进行取模运算,通常需要将浮点数转换为整数进行取模运算,然后再将结果转换回浮点数。取模运算是一种数学运算,通常用于计算除法的余数。在C++中,取模运算符为%
,它返回除法操作中的余数部分。取模运算通常用于整数之间的运算,但在C++中,也可以用于浮点数之间的运算,只是这种情况下的行为不是很明确。
下面是一个简单的例子来说明取模运算的概念:
int dividend = 10;
int divisor = 3;
int remainder = dividend % divisor; // 取模运算,计算10除以3的余数
在这个例子中,dividend
被除以divisor
,余数为1,所以remainder
的值为1。
取模运算也可以应用于负数。当被除数为负数时,余数的符号与被除数相同。当除数为负数时,余数的符号与被除数相反。例如:
int dividend = -10;
int divisor = 3;
int remainder = dividend % divisor; // 取模运算,计算-10除以3的余数
在这个例子中,被除数为-10,除数为3,余数为-1,因为-10 = (-3) * 3 + (-1)。
需要注意的是,当被除数为负数且除数为正数时,C++标准中并没有明确定义余数的行为。因此,在不同的编译器和平台上,对负数取模运算的结果可能会有所不同。因此,在实际应用中,应该避免对负数进行取模运算,或者根据具体情况对负数进行额外处理,以确保得到正确的结果。