java怎么取实数中的小数部分

如题所述

首先楼上那两位对于普通的使用场景来说基本是正确的。但是在一些需要精确结果的场景中(比如货币金额计算),double就会有问题了,比如:

(int)1023.99999999999999=1024;

再比如:

double n1=0.03;
double n2=0.02;
double n3=n1-n2;
System.out.println(n3);//0.009999999999999998

所以如果需要精确安全的操作的话,需要用到这个类:java.math.BigDecimal

调用它的divideAndRemainder方法来进行计算,该计算可以理解为:进行一次保留余数的除法运算。结果会返回一个BigDecimal类型且长度为2的数组,0下标的元素是该计算的商,1下标的元素是该结果的余数。

BigDecimal n4=new BigDecimal("1023.99999999999999");
BigDecimal [] result=n4.divideAndRemainder(BigDecimal.valueOf(1));
System.out.println(result[1].toString());//0.99999999999999

注意,构造BigDecimal对象的时候我使用的是字符串String类型的“1023.99999999999999
”,如果直接写1023.99999999999999的话会被认为是double类型的数,然后double类型的该值为1024.0,所以给字符串类型的值可以保证BigDecimal对象接收到的数就准确无误是我们心里想的数。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-28
把原数减掉整数部分就可以了。
取整数部分就用枪指转换就可以了。

-----------------------------
public class Demo {
public static void main (String args[]) {
double number = 2.56896;
double decimalPart = number - (int)number;
System.out.println(decimalPart);
}
}本回答被提问者采纳
第2个回答  2010-03-06
把实数强转成int 然后拿实数减去强转之后的int就可以了

double result = number - (int)number;
第3个回答  2010-03-06
比如
double num = 3.15;
double num0 = num - (int)num;

去掉整数部分,就是小数部分了。
第4个回答  2010-03-07
学了一招
相似回答