BigDecimal 加减乘除 | 比较大小 | 取最大最小值 | 保留小数位 |转String|科学计数法

本文主要是介绍BigDecimal 加减乘除 | 比较大小 | 取最大最小值 | 保留小数位 |转String|科学计数法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

BigDecimal 加减乘除 | 比较大小 | 取最大最小值 | 保留小数

一、加减乘除

BigDecimal num1 = new BigDecimal(2);
BigDecimal num2 = new BigDecimal(6);
BigDecimal num3 = null;--2+6 
num3 =  num1.add(num2); 	 
-- 结果:8--6-2
num3 = num2.subtract(num1);
-- 结果:4--2*6
num3 = num1.multiply(num2);
-- 结果:12--6/2
num3 = num2.divide(num1);
-- 结果:3

二、比较大小

这里比较的时候不能直接 num4.compareTo(new BigDecimal(1)) == 1 或者 -1,只能num4.compareTo(new BigDecimal(1)) > 0或 < 0 或 “= = 0”,不能直接判断1或-1

BigDecimal num4 = new BigDecimal(0);
BigDecimal num5 = new BigDecimal(1);
BigDecimal num6 = new BigDecimal(2);-- 小于 0<1
int i = num4.compareTo(new BigDecimal(1));	-- 结果:-1-- 等于 1=1
i = num5.compareTo(new BigDecimal(1))	-- 结果:0-- 大于 2>1
i = num6.compareTo(new BigDecimal(1))	-- 结果:1-- 常用一步到位进行判断:
if(num4.compareTo(new BigDecimal(1)) > 0){return true;
}

三、取最大最小值

BigDecimal num7 = new BigDecimal(11);
BigDecimal num8 = new BigDecimal(22);-- 比较两个数的大小,返回小的数
System.out.println(num7.min(num8));
-- 结果:11-- 比较两个数的大小,返回大的数
System.out.println(num7.max(num8));
-- 结果:22

四、保留小数

-- 注意这里new Bigdecimal不能直接使用floatdouble类型BigDecimal num9 = new BigDecimal("3.14559");
BigDecimal num10 = null;-- 表示直接去掉多余的位数,不进行四舍五入
num10 = num9.setScale(2, BigDecimal.ROUND_DOWN);
System.out.println(num10);
-- 结果:3.14-- 表示进位处理,即四舍五入
num10 = num9.setScale(2, BigDecimal.ROUND_UP);
System.out.println(num10);
-- 结果:3.15

五、遇到的坑,有小数位的精度问题

new 新的对象的时候整数可以直接这样:new BigDecimal(10);但是带小数的会有精度损失,比如:new BigDecimal(10.13456),所以带小数的要使用字符串进行处理:new BigDecimal(“10.13456”)。

六、转String

https://www.cnblogs.com/heqiyoujing/p/10409965.html

public static void main(String[] args) {// 浮点数的打印System.out.println(new BigDecimal("10000000000").toString());// 普通的数字字符串System.out.println(new BigDecimal("100.000").toString());// 去除末尾多余的0System.out.println(new BigDecimal("100.000").stripTrailingZeros().toString());// 避免输出科学计数法System.out.println(new BigDecimal("100.000").stripTrailingZeros().toPlainString());}

运行结果:

10000000000
100.000
1E+2
100

科学计数法问题
可能存在问题使用法:
bigDecimal.setScale(2, BigDecimal.ROUND_UP).stripTrailingZeros().toPlainString()
不确定建议
先得到bigDecimal的setScale
后另外String=bigDecimal…stripTrailingZeros().toPlainString()

七、取反

negate()

八、取绝对值

java.math.BigDecimal.abs()返回一个BigDecimal,其值是此BigDecimal的绝对值

这篇关于BigDecimal 加减乘除 | 比较大小 | 取最大最小值 | 保留小数位 |转String|科学计数法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/789447

相关文章

Java字符串处理全解析(String、StringBuilder与StringBuffer)

《Java字符串处理全解析(String、StringBuilder与StringBuffer)》:本文主要介绍Java字符串处理全解析(String、StringBuilder与StringBu... 目录Java字符串处理全解析:String、StringBuilder与StringBuffer一、St

Pyserial设置缓冲区大小失败的问题解决

《Pyserial设置缓冲区大小失败的问题解决》本文主要介绍了Pyserial设置缓冲区大小失败的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录问题描述原因分析解决方案问题描述使用set_buffer_size()设置缓冲区大小后,buf

Java String字符串的常用使用方法

《JavaString字符串的常用使用方法》String是JDK提供的一个类,是引用类型,并不是基本的数据类型,String用于字符串操作,在之前学习c语言的时候,对于一些字符串,会初始化字符数组表... 目录一、什么是String二、如何定义一个String1. 用双引号定义2. 通过构造函数定义三、St

详解C++中类的大小决定因数

《详解C++中类的大小决定因数》类的大小受多个因素影响,主要包括成员变量、对齐方式、继承关系、虚函数表等,下面就来介绍一下,具有一定的参考价值,感兴趣的可以了解一下... 目录1. 非静态数据成员示例:2. 数据对齐(Padding)示例:3. 虚函数(vtable 指针)示例:4. 继承普通继承虚继承5.

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

C#数据结构之字符串(string)详解

《C#数据结构之字符串(string)详解》:本文主要介绍C#数据结构之字符串(string),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录转义字符序列字符串的创建字符串的声明null字符串与空字符串重复单字符字符串的构造字符串的属性和常用方法属性常用方法总结摘

如何解决mysql出现Incorrect string value for column ‘表项‘ at row 1错误问题

《如何解决mysql出现Incorrectstringvalueforcolumn‘表项‘atrow1错误问题》:本文主要介绍如何解决mysql出现Incorrectstringv... 目录mysql出现Incorrect string value for column ‘表项‘ at row 1错误报错

java String.join()的使用小结

《javaString.join()的使用小结》String.join()是Java8引入的一个实用方法,用于将多个字符串按照指定分隔符连接成一个字符串,本文主要介绍了javaString.join... 目录1. 方法定义2. 基本用法2.1 拼接多个字符串2.2 拼接集合中的字符串3. 使用场景和示例3

C# string转unicode字符的实现

《C#string转unicode字符的实现》本文主要介绍了C#string转unicode字符的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录1. 获取字符串中每个字符的 Unicode 值示例代码:输出:2. 将 Unicode 值格式化

MySQL8.0设置redo缓存大小的实现

《MySQL8.0设置redo缓存大小的实现》本文主要在MySQL8.0.30及之后版本中使用innodb_redo_log_capacity参数在线更改redo缓存文件大小,下面就来介绍一下,具有一... mysql 8.0.30及之后版本可以使用innodb_redo_log_capacity参数来更改