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 [] 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对象接收到的数就准确无误是我们心里想的数。
取整数部分就用枪指转换就可以了。
-----------------------------
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() //四舍五入
或者强值类型转换成int类型,直接去掉小数部分本回答被提问者和网友采纳 参考技术B Math.round(你的数);得到的就是去掉小数部分的数哈。。并且四舍五入了的哈。。 参考技术C 楼上的两个方法都对 你可以直接转换为int 这样就去掉了 参考技术D 假设你的数a=1.001
(int) a=1;
加我为满意答案吧
以上是关于java怎么取实数中的小数部分的主要内容,如果未能解决你的问题,请参考以下文章