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
 }
}

总结

到此这篇关于java.math包下计算浮点数和整数的类的实例的文章就介绍到这了,更多相关java 计算浮点数和整数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java判断字符串是否是整数或者浮点数的方法

    如下所示: //判断整数(int) private boolean isInteger(String str) { if (null == str || "".equals(str)) { return false; } Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$"); return pattern.matcher(str).matches(); } //判断浮点数(double和float) private

  • JavaScipt中的Math.ceil() 、Math.floor() 、Math.round() 三个函数的理解

    首先还是看看JavaScript: The Definitive Guide, 4th Edition中对三个函数的定义. Math.ceil(): round a number up Arguments: Any numeric value or expression Returns: The closest integer greater than or equal to x. ---------------------------------------------------------

  • 基于java math API 的详细解释说明

    Math.PI 记录的圆周率Math.E 记录e的常量Math中还有一些类似的常量,都是一些工程数学常用量.Math.abs 求绝对值Math.sin 正弦函数 Math.asin 反正弦函数Math.cos 余弦函数 Math.acos 反余弦函数Math.tan 正切函数 Math.atan 反正切函数 Math.atan2 商的反正切函数Math.toDegrees 弧度转化为角度 Math.toRadians 角度转化为弧度Math.ceil 得到不小于某数的最大整数Math.floor

  • java.math包下计算浮点数和整数的类的实例

    java.math包提供了java中的数学类.包括基本的浮点库.复杂运算以及任意精度的数据运算 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类.BigInteger 除提供任意精度之外,它类似于 Java 的基本整数类型,因此在 BigInteger 上执行的操作不产生溢出,也不会丢失精度.除标准算法操作外,BigInteger 还提供模 (modular) 算法.GCD 计算.基本 (primality) 测试.素数生成.位处理以及一

  • webuploader在springMVC+jquery+Java开发环境下的大文件分片上传的实例代码

    注意: 1,webuploader上传组件会和jQuery自带的上传组件冲突,所以不要使用<form>标签中添加上传文件的属性; enctype="multipart/form-data" 2.并且屏蔽ApplicationContext-mvc.xml里面的拦截配置! <!-- 上传拦截,如最大上传值及最小上传值 --> <!--新增加的webuploader上传组件,必须要屏蔽这里的拦截机制 <bean id="multipartRes

  • java实体对象与Map之间的转换工具类代码实例

    这篇文章主要介绍了java实体对象与Map之间的转换工具类代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Map接口中键和值一一映射. 可以通过键来获取值. 给定一个键和一个值,你可以将该值存储在一个Map对象. 之后,你可以通过键来访问对应的值. 当访问的值不存在的时候,方法就会抛出一个NoSuchElementException异常. 当对象的类型和Map里元素类型不兼容的时候,就会抛出一个 ClassCastException异常

  • java获取包下被指定注解的类过程解析

    方案一: 采用reflections 框架(此框架依赖com.google.guava) 1.reflections框架地址:https://github.com/ronmamo/reflections 2.项目依赖 <dependency> <groupId>org.reflections</groupId> <artifactId>reflections</artifactId> <version>0.9.11</versi

  • java中的数学计算函数的总结

    java中的数学计算函数 Math类: java.lang.Math类中包含基本的数字操作,如指数.对数.平方根和三角函数. java.math是一个包,提供用于执行任意精度整数(BigInteger)算法和任意精度小数(BigDecimal)算法的类. java.lang.Math类中包含E和PI两个静态常量,以及进行科学计算的类(static)方法,可以直接通过类名调用. public static final Double E = 2.7182818284590452354 public

  • 每天练一练Java函数与算法Math函数总结与字符串转换整数

    题目 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数). 函数 myAtoi(string s) 的算法如下: 读入字符串并丢弃无用的前导空格 . 检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有). 确定最终结果是负数还是正数.如果两者都不存在,则假定结果为正. 读入下一个字符,直到到达下一个非数字字符或到达输入的结尾.字符串的其余部分将被忽略. 将前面步骤读入的这些数字转换为整数

  • Java语言Lang包下常用的工具类介绍

    无论你在开发哪中 Java 应用程序,都免不了要写很多工具类/工具函数.你可知道,有很多现成的工具类可用,并且代码质量都很不错,不用你写,不用你调试,只要你发现. 在 Apache Jakarta Common 中, Lang 这个 Java 工具包是所有 Apache Jakarta Common 项目中被使用最广泛的,几乎你所知道的名气比较大的软件里面都有用到它,包括 Tomcat, Weblogic, Websphere, Eclipse 等等.我们就从这个包开始介绍整个 common 项

  • java反射获取包下所有类的操作

    我就废话不多说了,大家还是直接看代码吧~ public static void main(String[] args) { try { // 获取包名下所有类 Set<Class<?>> classes = getClasses("com"); for(Class c:classes){ // 打印有RestController 的类 if(c.isAnnotationPresent(RestController.class)){ System.out.prin

  • 如何获取包下所有类中的注解的值(java工具类)

    获取包下所有类中注解的值 作用: 这个工具类主要的作用就是获取类中的注解的值. 应用场景: 做权限的时候获取@RequestMapping();的值,自动添加到数据库中. /** * getRequestMappingValue方法描述: * 作者:thh * 日期:2016年7月18日 下午5:41:00 * 异常对象:@param packageName * 异常对象:@return */ public static List<String> getRequestMappingValue(

  • Java中JUC包(java.util.concurrent)下的常用子类

    目录 一.对象锁juc.locks包 二.原子类 三.四个常用工具类 3.1 信号量 Semaphore 3.2 CountDownLatch 总结 一.对象锁juc.locks包 在Java中除了synchronized关键字可以实现对象锁之外,java.util.concurrent中的Lock接口也可以实现对象锁. 介绍一下这个lock锁的简要实现: JDK1.0就有的,需要JVM借助操作系统提供的mutex系统原语实现 JDK1.5之后,Java语言自己实现的互斥锁实现,不需要借助操作系

随机推荐