程序大概思路是这样的:先提取出小数部分,再提取出整数部分。请看代码:
#include
<stdioh>
int
main()
{
float
num
=
314;
float
temp
=
num;
int
integer;
while
(temp-
1
>
0)
{
temp--;
}
integer
=
num
-
temp;
printf("%2f的整数部分是:%d,小数部分是:%2f",
num,
integer,
temp);
getchar();
return
0;
}
程序第4行定义了一个浮点数314,我们将提取出它的整数部分和小数部分。
提取处小数部分的思路是将浮点数不断减1,直到剩余部分大于0小于1,此时就得到了小数部分。
提取整数部分只需将原有的浮点数减去小数部分即可。
最后的getchar()用于暂停程序。
double
dd=12334;
int
i=(int)dd;
第二句的意思是把第一个double值强制转换成int型,然后你相减就好了。但是这样做可能在不同的JDK版本下会损失精度,出现那样问题的话自己再取个固定位数值就好了。
如上图:
首先,确定要提取的小数单元格位置,例如为C1,
其次,确定要提取的数字是小数点后第几位,确定其单元格位置,例如C2(当然这个可以省略可以在后面公式直接添加,但是不智能)
再者,确定小数点位置,用公式:=FIND("",C1),获取小数点位置
最后,提取对应位置的数,用公式:=RIGHT(LEFT(C1,C2+C3),1)
所以当该变小数和要提取的位数时,小数位置和提取数字均会变化
import javamathBigDecimal;
import javautilScanner;
public class GetFloat {
public static void main(String args[]) {
Scanner in = new Scanner(Systemin);
float f = innextFloat();
int fInt = (int) f;
BigDecimal b1 = new BigDecimal(FloattoString(f));
BigDecimal b2 = new BigDecimal(IntegertoString(fInt));
float fPoint = b1subtract(b2)floatValue();
Systemoutprintln("整数部分为:" + fInt + "\n" + "小数部分为: " + fPoint);
}
}
数学上有个函数是取小数的整数部分的写作:[
]
。
也就是说
[34]=3
[89]=8
[-87]=-8
即是直接舍去小数点后面的数,不进行四舍五入!
取小数部分即是X-[X],某个数直接去掉整数部分就是小数部分了。
代码如下:
#include <stdioh>
int main(){
double number; //其中number表示输入的数
int zhengshu; //表示实数的整数部分
double xiaoshu; //表示整数的小数部分
printf("请输入一个实数:"); //提示输入一个数
scanf("%lf",&number);
zhengshu = (int)number;
xiaoshu = number-zhengshu;
printf("%f整数部分为:%d,小数部分为:%f \n",number,zhengshu,xiaoshu);
return 0;
}。
程序执行结果:
程序设计思路就是输入一个浮点数,把这个浮点强转为整数,C语言强制转换浮点数为整数的话,会丢失精度,也就是小数部分,再把原来的数减去整数部分,就可以得到小数部分,然后定义变量把相应的部分存储,打印出来就行了。
public class T
{
public static void main(String[] args)
{
double a = 3987;
double b = a%10;
int c = (int)(a - b);
Systemoutprintln("a="+a + " 整数部分="+c+" 小数部分="+b);
}
}
以上就是关于如何提取浮点数的整数以及小数部分全部的内容,包括:如何提取浮点数的整数以及小数部分、java中 double型取小数部分、如何快速提取Excel小数点后第N位数字等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)