文章目录
解决方法把它转换成String类型
使用场景
一般使用在金额比较大的字段中,不想要精度丢失,计算金额要求很准确。
1.可以在它的实现类属性上面加上这个注解 (防止小数点后面的数没有了)
@JsonSerialize(using= ToStringSerializer.class)
2 细节:当这个属性为BigDecimal类型,可以通过这个方法进行转换为Integer类型
int rulcon = vo.getRulcon().intValue();
2.1 顺便它还有相关的一些其他的方法
new BigDecimal(2.0000).divide() //除法
.mutipyly(30) //乘法
.add(6)加法
. scale() //percision() 精度
3然后BigDecimal是不可以设置为空的,
inspectorUphold.setRuldata(null);设置不进去
if(rulcon!=3){
inspectorUphold.setRuldata(BigDecimal.valueOf(0));
}
else {
inspectorUphold.setRuldata(vo.getRuldata());
}
4. java在实体类中使用的是BigDecimal类型,数据库中字段可以用decimal类型,小数点可以自定义。
5. 常用的方法,要求转换为Integer类型,和小数点位数的准备
package com.batch.handler;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;
public class TestMain {
public static void main(String[] args) {
BigDecimal bigDecimal = new BigDecimal("300");
System.out.println(bigDecimal);
BigDecimal bigDecimalxiaoShu = new BigDecimal("300.66666666");
System.out.println(bigDecimalxiaoShu);
// * 小数的BigDecimal转换为Integer报错 For input string: "0.8000000000000000444089209850062616169452667236328125"
/* Integer integer = Integer.valueOf(bigDecimal.toString());
System.out.println(integer);*/
// Double aDouble = Double.valueOf(bigDecimal.toString());
// System.out.println(aDouble);
BigDecimal multiply = bigDecimal.multiply(new BigDecimal(100));
System.out.println(multiply);
int i = multiply.intValue();
System.out.println(i);
int i1 = bigDecimal.intValue();
System.out.println("i1=" + i1);
BigDecimal bigDecimal1 = new BigDecimal(1);
Integer result = bigDecimal.multiply(bigDecimal1).intValue();
System.out.println("result=" + result);
BigDecimal subtract = bigDecimal1.subtract(new BigDecimal("0.3333"));
System.out.println("intValue="+subtract.intValue());
System.out.println("subtract---" + subtract);
List<Integer> all = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);//全部数据
List<Integer> part = Arrays.asList( 2, 3, 5, 6, 9);//部分数据
List<Integer> result1 = new ArrayList<>();//取出差的数据
result1 = all.stream().filter(item->part.stream().allMatch(each->!item.equals(each))).collect(Collectors.toList());
System.out.println(result1);
List<String> strings = Arrays.asList("176662", "13245435", "17898u9");
Iterator<String> iterator = strings.iterator();
Object next =null;
while (iterator.hasNext()){
next = iterator.next();
}
System.out.println("next------------" + next);
}
}