bigdecimal

BigDecimal 保留小数位

拥有回忆 提交于 2020-03-24 03:13:24
public class test1_format { public static void main(String[] args) { BigDecimal decimal = new BigDecimal("1.12345"); System.out.println(decimal); BigDecimal setScale = decimal.setScale(4,BigDecimal.ROUND_HALF_DOWN); System.out.println(setScale); BigDecimal setScale1 = decimal.setScale(4,BigDecimal.ROUND_HALF_UP); System.out.println(setScale1); } } 参数定义 ROUND_CEILING Rounding mode to round towards positive infinity. 向正无穷方向舍入 ROUND_DOWN Rounding mode to round towards zero. 向零方向舍入 ROUND_FLOOR Rounding mode to round towards negative infinity. 向负无穷方向舍入 ROUND_HALF_DOWN Rounding mode to round towards

Java 基础知识的一些易错点

泪湿孤枕 提交于 2020-03-14 15:25:06
1、正确使用 equals() Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用 equals。 String str = null; if (str.equals("abcd")) { ... } else { ... } 如果变量str为null,会抛出空指针异常,如果没有catch来捕获处理(我们一般不会在equals()上加try),程序直接就终止运行了。 abcd".equals(str) 把常量写在前面,“abcd”!=null,结果为false,不会抛出异常。 但2个都是变量呢? 最推荐下面的方式:使用工具类Objects(JDK7自带的) Objects.equals(str,"abcd") 就算2个都是变量,2个都是null,都不会抛出异常。如果2个都是null,null==null,返回true。 Objects的部分源码如下: public static boolean equals(Object a, Object b) { // 如果a==null的话此时a.equals(b)就不会得到执行,避免出现空指针异常。 return (a == b) || (a != null && a.equals(b)); } ||、&&都是断路的,如果||前面为true,就不会执行后面的判断;如果&&前面为false,就不会执行后面的判断。

jdk8 新特性stream().map()

风流意气都作罢 提交于 2020-03-12 00:37:20
1.大写字符串列表 1.1 简单的Java示例将Strings列表转换为大写 TestJava8.java package com.mkyong.java8; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class TestJava8 { public static void main(String[] args) { List<String> alpha = Arrays.asList("a", "b", "c", "d"); //Before Java8 List<String> alphaUpper = new ArrayList<>(); for (String s : alpha) { alphaUpper.add(s.toUpperCase()); } System.out.println(alpha); //[a, b, c, d] System.out.println(alphaUpper); //[A, B, C, D] // Java 8 List<String> collect = alpha.stream().map(String::toUpperCase)

两个数计算同比

懵懂的女人 提交于 2020-03-11 16:27:41
import java.math.BigDecimal; /** * @author liangyehui * @version v1.0 * @create 2020/2/13 **/ public class CompareTongbi { /**计算同比 * @param preNum 同期数 * @param sufNum 往期数 */ public static String percentBigDecimal(BigDecimal preNum, BigDecimal sufNum){ double result = countDecimal(preNum,sufNum); if(result>0){ return ""+result+"%"; } if(result<0){ return "-"+Math.abs(result)+"%"; } if(result==0){ return "0"+"%"; } return null; } public static double countDecimal(BigDecimal preNum, BigDecimal sufNum){ boolean preBoolean = verifyNum(preNum); boolean sufBoolean = verifyNum(sufNum); //同时为true计算 if

B2013 4 黄金连分数

六月ゝ 毕业季﹏ 提交于 2020-03-11 12:56:51
import java.math.BigDecimal; import java.math.BigInteger; //黄金年分数 //换成分数,有规律 //double无法表示精度如此长的数 ,需要用到BigInteger public class B20134 { public static void main(String [] agru) { BigInteger a=BigInteger.ONE; BigInteger b=BigInteger.ONE; for(int i=1;i<=500;i++) { BigInteger t=b; b=a.add(b); a=t; } BigDecimal res=new BigDecimal(a,110).divide(new BigDecimal(b,110),BigDecimal.ROUND_HALF_DOWN); System.out.println(res.toPlainString().substring(0,103)); } } 通过f提高or循环的i可以提高准确度。 最后输出的103位去掉个位的0和小数点,还剩下101位,看看最后一位的多少,四舍五入一下,变成100位小数,即为答案。 来源: CSDN 作者: panda没有黑眼圈*~* 链接: https://blog.csdn.net/weixin

BigDecimal浅析

大憨熊 提交于 2020-03-11 09:58:41
为什么使用BigDecimal 首先看一个例子: public class DoubleTest { public static void main(String[] args) { System.out.println(0.1 + 0.2); } } 输出的结果:0.30000000000000004(我们的预期是0.3) 其实float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。所有就出现了BigDecimal。 jdk文档BigDecimal的描述: 不可变的、任意精度的有符号十进制数。BigDecimal 由任意精度的整数非标度值和32位的整数标度(scale)组成。BigDecimal 表示的数值是 (unscaledValue × 10-scale)。 BigDecial构造方法 下面是常用的四种构造方法: BigDecimal(int) BigDecimal(double) BigDecimal(long) BigDecimal(String) public static void main(String[] args) { double a = 123.11; BigDecimal

bigdecimal的相关函数

早过忘川 提交于 2020-03-11 09:52:04
保留两位小数{ 方法一:{ double c=3.154215; java.text.DecimalFormat myformat=new java.text.DecimalFormat("0.00"); String str = myformat.format(c); } 方式二:{ 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 表示浮点型 } } 四舍五入 { double f = 111231.5585; BigDecimal b = new BigDecimal(f); //保留2位小数 double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); } [java] view plain copy

java之Math

一笑奈何 提交于 2020-03-10 03:24:13
一、Math类 java.lang.Math提供了一系列静态方法用于科学计算;其方法的參数和返回值类型一般为double型。 abs 绝对值 acos,asin,atan,cos,sin,tan 三角函数 sqrt 平方根 pow(double a,doble b) a的b次幂 log 自然对数 exp e为底指数 max(double a,double b) min(double a,double b) random() 返回0.0到1.0的随机数 long round(double a) double型数据a转换为long型(四舍五入) toDegrees(double angrad) 弧度—>角度 toRadians(double angdeg) 角度—>弧度 二、BigInteger类 Integer类作为int的包装类,能存储的最大整型值为2^31-1,BigInteger类的数值范围较Integer类的数字 范围要大得多,能够支持随意精度的整数。 ①构造器 BigInteger(String val) 经常用法 public BigInteger abs() public BigInteger add(BigInteger val) public BigInteger subtract(BigInteger val) public BigInteger multiply

常用类总结下

好久不见. 提交于 2020-03-10 01:38:41
BigInteger类【理解】 BigInteger的介绍 用于大整数计算(理论整数的位数是不受限制的) BigInteger的构造方法 public BigInteger(String num); //创建一个大整数 BigInteger的成员方法 BigInteger不能直接使用±*/进行计算,而是用通过方法进行计算 public BigInteger add(BigInteger value); 求和 public BigInteger subtract(BigInteger value); 求差 public BigInteger multiply(BigInteger value); 求积 public BigInteger divide(BigInteger value); 求商 例如: public class TestBigInteger { public static void main ( String [ ] args ) { //1.创建一个BigInteger BigInteger b1 = new BigInteger ( "99999999999999999" ) ; //2.计算 //求和 BigInteger add = b1 . add ( new BigInteger ( "1111111111111111" ) ) ; System .

java保留2位小数及BigDecimal使用

拟墨画扇 提交于 2020-03-08 16:39:18
java保留两位小数的方法 import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; public class NumberFormatDemo { public static void main(String[] args) { // BigDecimal // 保留两位小数 System.out.println(new BigDecimal(0.2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());// 0.2 System.out.println(new BigDecimal(0.235).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());// 0.23 System.out.println(new BigDecimal(0.2351).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());// 0.24 System.out.println(new BigDecimal(42).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());//