「java小数运算」java定义小数
本篇文章给大家谈谈java小数运算,以及java定义小数对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java怎么取实数中的小数部分
- 2、关于Java 小数(浮点型)相加
- 3、Java计算中,如何设定小数点保留位数
- 4、java中小数怎么四舍五入?
- 5、java中运算结果为小数时为什么小数部分为0
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对象接收到的数就准确无误是我们心里想的数。
关于Java 小数(浮点型)相加
float的有效精度只有7位,超过了就改为double,不然无法精确运算。
double Java里两个二位小数相加,会得到小数点后很多位,这是double的缺点,你可以使用BigDecimal 来精确运算。例子:
import java.math.BigDecimal;
public class test {
public static void main(String[] args) {
double kk = 3.14;
kk += 0.37;
System.out.println(kk);
BigDecimal b1 = new BigDecimal("3.14");
BigDecimal b2 = new BigDecimal("0.37");
BigDecimal b3 = b1.subtract(b2);
BigDecimal b4 = b1.add(b2);
System.out.println(b3);
System.out.println(b4);
}
}
Java计算中,如何设定小数点保留位数
方式一:
四舍五入
double f = 111231.5585;
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
保留两位小数
方式二:
java.text.DecimalFormat df =new java.text.DecimalFormat(”#.00″);
df.format(你要格式化的数字);
例:new java.text.DecimalFormat(”#.00″).format(3.1415926)
#.00 表示两位小数 #.0000四位小数 以此类推…
方式三:
double d = 3.1415926;
String result = String .format(”%.2f”);
%.2f %. 表示 小数点前任意位数 2 表示两位小数 格式后的结果为f 表示浮点型。
java中小数怎么四舍五入?
按照你的要求为不确定保留几位小数的字符串做四舍五入的Java程序如下
import java.math.BigDecimal;
public class A {
public static void main(String[] args) {
String s="0.00000999999997";
//四舍五入,length是小数位数
int length=s.substring(s.indexOf(".")+1).length();
String s1=String.format("%."+(length-1)+"f",new BigDecimal(s));
//去尾部0
BigDecimal bd=new BigDecimal(s1).stripTrailingZeros();
System.out.println(bd.toPlainString());
}
}
java中运算结果为小数时为什么小数部分为0
你定义的时候把 运算数 定义成 浮点型,然后再进行运算。
如: double num1= 6;
double num2 = 4;
double result = num1/num2;
-----------------------------------
小数为0的情况:
int num1 = 6;
int num2 = 4;
int result = num1/num2; (或 double result = num1/n um2;)
原因是 num1和num2都是 整形 ,两个整形的数 运算完成后 得到的数是 整数(如:1),如果赋值给一个 浮点型 的变量,那么只是在 整数 的后面加上 .0 (如:1.0)
java小数运算的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java定义小数、java小数运算的信息别忘了在本站进行查找喔。
发布于:2022-11-29,除非注明,否则均为
原创文章,转载请注明出处。