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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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对象接收到的数就准确无误是我们心里想的数。

参考技术A 把原数减掉整数部分就可以了。
取整数部分就用枪指转换就可以了。

-----------------------------
public class Demo
public static void main (String args[])
double number = 2.56896;
double decimalPart = number - (int)number;
System.out.println(decimalPart);

本回答被提问者采纳
参考技术B 把实数强转成int 然后拿实数减去强转之后的int就可以了

double result = number - (int)number;
参考技术C 比如
double num = 3.15;
double num0 = num - (int)num;

去掉整数部分,就是小数部分了。
参考技术D 学了一招

Java有一个小数,如何去掉小数部分?

Java有一个小数,如何去掉小数部分?

1、Math.round(float f)对小数部分四舍五入
或者强值类型转换成int类型,直接去掉小数部分!

2、

3、向上取整:Math.ceil() //只要有小数都+1
向下取整:Math.floor() //不取小数
四舍五入:Math.round() //四舍五入

参考技术A Math.round(float f)对小数部分四舍五入
或者强值类型转换成int类型,直接去掉小数部分本回答被提问者和网友采纳
参考技术B Math.round(你的数);得到的就是去掉小数部分的数哈。。并且四舍五入了的哈。。 参考技术C 楼上的两个方法都对 你可以直接转换为int 这样就去掉了 参考技术D 假设你的数a=1.001

(int) a=1;

加我为满意答案吧

以上是关于java怎么取实数中的小数部分的主要内容,如果未能解决你的问题,请参考以下文章

c语言如何取整数和小数

Java有一个小数,如何去掉小数部分?

java中,强制转换符把float转换为int时,按四舍五入,还是直接丢掉小数部分?

C语言中float型数据怎么 取整数部分算法 或取小数部分

C语言中float型数据怎么 取整数部分算法 或取小数部分

int函数怎么取后两位