`

java精确数字计算

    博客分类:
  • j2se
阅读更多

import java.math.BigDecimal;

public class MathExtend {

 // 默认除法运算精度
 private static final int DEFAULT_DIV_SCALE = 10;

 public static double add(double v1, double v2)
 {
  BigDecimal b1 = new BigDecimal(Double.toString(v1));
  BigDecimal b2 = new BigDecimal(Double.toString(v2));
  return b1.add(b2).doubleValue();
 }

 public static String add(String v1, String v2)
 {
  BigDecimal b1 = new BigDecimal(v1);
  BigDecimal b2 = new BigDecimal(v2);
  return b1.add(b2).toString();
 }

 public static double subtract(double v1, double v2)
 {
  BigDecimal b1 = new BigDecimal(Double.toString(v1));
  BigDecimal b2 = new BigDecimal(Double.toString(v2));
  return b1.subtract(b2).doubleValue();
 }

 public static String subtract(String v1, String v2)
 {
  BigDecimal b1 = new BigDecimal(v1);
  BigDecimal b2 = new BigDecimal(v2);
  return b1.subtract(b2).toString();
 }

 public static double multiply(double v1, double v2)
 {
  BigDecimal b1 = new BigDecimal(Double.toString(v1));
  BigDecimal b2 = new BigDecimal(Double.toString(v2));
  return b1.multiply(b2).doubleValue();
 }

 public static String multiply(String v1, String v2)
 {

  BigDecimal b1 = new BigDecimal(v1);
  BigDecimal b2 = new BigDecimal(v2);

  return b1.multiply(b2).toString();
 }

 public static double divide(double v1, double v2)
 {
  return divide(v1, v2, DEFAULT_DIV_SCALE);
 }

 public static double divide(double v1, double v2, int scale)
 {

  return divide(v1, v2, scale, BigDecimal.ROUND_HALF_UP);
 }

 public static double divide(double v1, double v2, int scale, int round_mode) {
  if (scale < 0)

  {
   throw new IllegalArgumentException(
     "The scale must be a positive integer or zero");
  }

  BigDecimal b1 = new BigDecimal(Double.toString(v1));
  BigDecimal b2 = new BigDecimal(Double.toString(v2));

  return b1.divide(b2, scale, round_mode).doubleValue();
 }

 public static String divide(String v1, String v2)
 {
  return divide(v1, v2, DEFAULT_DIV_SCALE);
 }

 public static String divide(String v1, String v2, int scale)
 {
  return divide(v1, v2, DEFAULT_DIV_SCALE, BigDecimal.ROUND_HALF_UP);
 }

 public static String divide(String v1, String v2, int scale, int round_mode)
 {
  if (scale < 0)

  {
   throw new IllegalArgumentException(
     "The scale must be a positive integer or zero");
  }

  BigDecimal b1 = new BigDecimal(v1);
  BigDecimal b2 = new BigDecimal(v2);

  return b1.divide(b2, scale, round_mode).toString();
 }

 public static double round(double v, int scale)
 {
  return round(v, scale, BigDecimal.ROUND_HALF_UP);
 }

 public static double round(double v, int scale, int round_mode)
 {
  if (scale < 0)

  {
   throw new IllegalArgumentException(
     "The scale must be a positive integer or zero");
  }

  BigDecimal b = new BigDecimal(Double.toString(v));
  return b.setScale(scale, round_mode).doubleValue();
 }

 public static String round(String v, int scale)
 {
  return round(v, scale, BigDecimal.ROUND_HALF_UP);
 }

 public static String round(String v, int scale, int round_mode)
 {
  if (scale < 0)
  {
   throw new IllegalArgumentException(
     "The scale must be a positive integer or zero");
  }
  BigDecimal b = new BigDecimal(v);
  return b.setScale(scale, round_mode).toString();
 }
 
 public static void main(String[] args)throws Exception{
  System.out.println(divide(10, 3, 3, BigDecimal.ROUND_HALF_UP));
 }
}

分享到:
评论

相关推荐

    JavaScript小数点精确计算

    由于JavaScript内部使用的是IEEE 754标准来存储和处理浮点数,这可能导致在进行小数运算时出现精度丢失问题,尤其是在涉及大数字或者循环计算时。本篇将深入探讨这个问题,并提供一些解决方案。 首先,我们来理解...

    java基础--4.常用类-6.数字

    总之,Java中的数字处理涵盖了许多方面,从基本的数据类型到复杂的数学运算,再到高精度计算,都是Java程序员必备的知识点。理解并熟练运用这些概念,能帮助我们编写出高效且准确的代码。在实际编程中,根据需求选择...

    java 时间转换成精确的生辰八字

    5. **处理月份和日子**:月和日的天干地支计算相对简单,因为它们直接与农历月份和日子的数字相对应,需要进行一定的映射。 6. **计算时辰**:时辰的计算基于24小时制,将小时数除以2(因为一天分为12个时辰),然后...

    金钱大写转小写数字类java(精确到角)

    本节将详细探讨如何用Java编程语言实现一个精确到角的中文大写转小写数字的程序。 首先,我们需要了解中文大写数字与阿拉伯数字的对应关系: 1. 零:零 2. 一:壹 3. 二:贰 4. 三:叁 5. 四:肆 6. 五:伍 7. 六:...

    Java中实现浮点数的精确计算

    ### Java中实现浮点数的精确计算 在Java编程中,使用`float`和`double`类型进行浮点数计算时经常会遇到精度丢失的问题。这是因为浮点数在计算机内部是以二进制形式存储的,而某些十进制小数无法用二进制精确表示,...

    java控制台四则运算计算程序源码

    Java控制台四则运算计算程序源码是一种基于Java编程语言实现的简单计算器,它能够处理任意长度的符合四则运算规则的数学表达式。在控制台上进行交互式操作,用户可以输入数学公式,程序会进行解析并计算出结果。这个...

    JAVA版的WINDOWS计算器

    开发者需要利用JFrame作为窗口容器,JButton表示各个数字和运算符按钮,JLabel显示计算结果。 2. Event Handling:为了响应用户的点击事件,需要实现ActionListener接口并覆盖其actionPerformed方法。每个按钮的...

    Java的数字精确计算问题-BigDecimal

    java的数字运算,偶尔会出现精度的问题,以下阐述的 java的BigDecimal类的使用.  例如:  System.out.println(0.9+0.3); 结果1.2  System.out.println(1.9+0.3); 结果2.1999999999999997  System.out....

    java精度计算代码 java指定精确小数位

    在Java编程语言中,进行精度计算时,我们经常会遇到浮点数运算导致的精度丢失问题。这是因为Java中的float和double类型是基于IEEE 754标准的,它们无法精确表示所有的小数。为了确保计算结果的精确性,我们需要使用`...

    数字格式化类与大数处理利用案例轻松学习Java语言PPT学习教案.pptx

    Java 语言中的数字格式化和大数处理是编程中非常重要的概念,特别是在处理财务、科学计算等需要精确数值表示的场景。本篇内容主要讲解了Java中的`NumberFormat`类和`DecimalFormat`类用于数字格式化,以及`...

    java保留两位小数问题

    本文将深入探讨如何在Java中保留两位小数,并覆盖四舍五入、浮点数精确计算以及避免科学记数法等问题。 #### 四舍五入保留两位小数 四舍五入是数学中的一个基本概念,指的是当一个数的小数部分小于等于0.5时,将其...

    基于Java的数字电路仿真平台中波形观测的实现.pdf

    本文针对数字电路仿真平台中波形观测的需求,基于Java语言,尤其是Applet技术,深入探讨了波形观测的实现方案,并对相关技术应用进行了详细论述。 一、基于Java的数字电路仿真平台架构 随着Java技术的不断成熟,它...

    Java+OpenCV+OCR 图像字符处理

    此外,还可以使用边缘检测(如Canny算法)、轮廓检测等技术来定位字符区域,为OCR提供更精确的输入。 接着,OCR是图像字符识别的关键。OCR技术通过分析图像中的形状和结构,将图像中的字符转化为可编辑的文本。这里...

    Java-BP.rar_BP_BP 识别_java BP_数字识别_识别数字

    在这个Java实现中,"基于Java的BP网络数字识别法"可能包含以下关键组成部分: 1. 数据预处理:数字识别通常需要对图像进行预处理,如灰度化、二值化、降噪、尺寸归一化等,以便提取有意义的特征。 2. 神经网络架构...

    解决javascript中的浮点数计算不精确问题

    5. **使用BigDecimal类**:在某些高级应用中,可以考虑使用类似Java的`BigDecimal`类,它提供了高精度的浮点数运算,但JavaScript原生并不支持,可能需要引入第三方库。 理解JavaScript浮点数计算的局限性并采用...

    nc.jar.zip_java 矩阵_java 计算_大数_大数计算 java_矩阵

    "nc.jar.zip_java 矩阵_java 计算_大数_大数计算 java_矩阵"这个标题和描述暗示了该压缩包可能包含一个Java库,专注于矩阵运算、大数计算以及其他数值计算方法。 首先,让我们来探讨一下矩阵运算。在Java中,标准库...

    金钱大写转数字类型,精确到分

    本文将详细探讨如何实现“金钱大写转数字类型,精确到分”的功能。 首先,我们需要理解汉字大写金额的构成。大写金额通常包括以下部分:零(零)、壹(1)、贰(2)、叁(3)、肆(4)、伍(5)、陆(6)、柒(7)...

    Java的数学运算处理类讲解代码(BigDecimal、Math、Random、DecimalFormat类全部操作方法API)

    舍入规则控制:当需要精确控制数字舍入规则时,如货币计算、统计分析等。 随机数生成:当需要生成伪随机数以支持随机性需求时,如游戏开发、密码生成等。 目标: 理解BigDecimal类的使用,并了解如何处理大数精度...

    Java 计算类

    Java计算类是一个专门设计用于进行基本数学运算(加、减、乘、除)以及控制数字格式(四舍五入、保留特定位数的小数)的类。该类使用了Java中的BigDecimal类来确保在处理大数字或者要求精度高的计算时,能够保持计算...

    java对音频文件的频谱分析

    在Java编程环境中,进行音频文件的频谱分析是一项复杂但重要的任务,特别是在音频处理和音乐信息检索领域。...通过这样的方式,你可以深入理解音频频谱分析的原理,并在Java环境中实现高效且精确的音频分析功能。

Global site tag (gtag.js) - Google Analytics