java.math包下计算浮点数和整数的类的实例
作者:三点杰 发布时间:2023-02-06 16:19:39
标签:java,浮点数,整数,math
java.math包提供了java中的数学类。包括基本的浮点库、复杂运算以及任意精度的数据运算
提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。BigInteger 除提供任意精度之外,它类似于 Java 的基本整数类型,因此在 BigInteger 上执行的操作不产生溢出,也不会丢失精度。除标准算法操作外,BigInteger 还提供模 (modular) 算法、GCD 计算、基本 (primality) 测试、素数生成、位处理以及一些其他操作。 BigDecimal 提供适用于货币计算和类似计算的任意精度的有符号十进制数字。BigDecimal 允许用户对舍入行为进行完全控制,并允许用户选择所有八个舍入模式。
1. BigDecimal
不可变的、任意精度的有符号十进制数。BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负 scale 次幂。因此,BigDecimal 表示的数值是 (unscaledValue × 10-scale)。
下面通过一些例子给大家详细介绍下java.math包下计算浮点数和整数的类,一起看看吧
(1)BigIntege:实现任意精度的整数运算。
(2)BigDecimal:实现任意精度的浮点运算。
例如:
使用BigDecimal进行浮点数比较
import java.math.BigDecimal;
public class HelloWorld{
public static void main(String[] args){
BigDecimal a=BigDecimal.valueOf(1.0);
a=a.subtract(BigDecimal.valueOf(0.1)); //subtract:减去
a=a.subtract(BigDecimal.valueOf(0.1));
a=a.subtract(BigDecimal.valueOf(0.1));
a=a.subtract(BigDecimal.valueOf(0.1));
a=a.subtract(BigDecimal.valueOf(0.1));
System.out.println(a); //输出:0.5
System.out.println(1.0-0.1-0.1-0.1-0.1-0.1); //输出:0.5000000000000001
BigDecimal b=BigDecimal.valueOf(0.1);
BigDecimal c=BigDecimal.valueOf(1.0/10.0);
System.out.println(b==c); //false
System.out.println(b.equals(c)); //true
}
}
总结
来源:https://www.cnblogs.com/wangwenchao/archive/2020/02/24/12359473.html


猜你喜欢
- 一、spring声明式事务1.1 spring的事务管理器spring没有直接管理事务,而是将管理事务的责任委托给JTA或相应的持久性机制所
- 在开发中,遇到了sql语句报错,但是并没有回滚的情况。经过几天的排查,终于找到了事务没有回滚的原因。原来的项目用的是informix的数据库
- 前言数据库访问是web应用必不可少的部分。现今最常用的数据库ORM框架有Hibernate与Mybatis,Hibernate貌似在传统IT
- AbstractAutowireCapableBeanFactory#applyMergedBeanDefinitionPostProces
- 背景:以前学的Java进行开发,多用到Mybatis,Hiberante等ORM框架,最近需要上手一个C#的项目,由于不是特别难,也不想再去
- 废话不多说,直接上代码String longUrl = "https://open.weixin.qq.com/connect/o
- 前言自从 2017 年 C# 7.0 版本开始引入声明模式和常数模式匹配开始,到 2022 年的 C# 11 为止,最后一个板块列表模式和切
- 利用redis进行springSession的存储:存储:// 在session中保存用户信息 H
- 一、实现效果本篇文章实现了简单的图片轮播,初始化3张资源图片,初始化3秒更换一次图片背景,轮换播放。二、知识点Thread线程start()
- 使用mybatis-plus自动生成了5个模块(xml/bean/mapper/service/controller)的代码,这里练习一下m
- 原因分析@Anysc注解会开启一个新的线程,主线程的Request和子线程是不共享的,所以获取为null在使用springboot的自定带的
- 查询数据会比较耗时,所以我们想把查询数据放在一个异步任务中,查询结果获得Cursor,然后在onPostExecute (Cursor re
- Spring Batch job任务只跑一次在一次实际使用spring batch的过程中,在定时任务中,第一次执行Job没有出现问题,然后
- 1:HttpHelper.javapublic class HttpHelper { //1:标准的Ja
- 引言近期,Google 发布了 Android 11的平台稳定版本。Android 11 将在确保用户隐私安全的前提下,更好地让用户畅享最新
- 本文实例为大家分享了C#实现上传下载图片的具体代码,供大家参考,具体内容如下1.首先我们通过流来上传下载图片,所有操作只停留在流这一层Mem
- 前言腾讯动漫app v8.1.6 工具:jadx、frida、pixel3 安卓10提示:以下是本篇文章正文内容,案例可供参考一、问题1.1
- PreparedStatement介绍可以通过调用 Connection 对象的 prepareStatement(String sql)
- 描述符描述符是你添加到那些定义中来改变他们的意思的关键词。Java 语言有很多描述符,包括以下这些:可访问描述符不可访问描述符应用描述符,你
- 前言最近在开发项目的时候涉及到复杂的动态条件查询,但是mybaits本身不支持if elseif类似的判断但是我们可以间接通过 chose