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内部使用的是IEEE 754标准来存储和处理浮点数,这可能导致在进行小数运算时出现精度丢失问题,尤其是在涉及大数字或者循环计算时。本篇将深入探讨这个问题,并提供一些解决方案。 首先,我们来理解...
总之,Java中的数字处理涵盖了许多方面,从基本的数据类型到复杂的数学运算,再到高精度计算,都是Java程序员必备的知识点。理解并熟练运用这些概念,能帮助我们编写出高效且准确的代码。在实际编程中,根据需求选择...
5. **处理月份和日子**:月和日的天干地支计算相对简单,因为它们直接与农历月份和日子的数字相对应,需要进行一定的映射。 6. **计算时辰**:时辰的计算基于24小时制,将小时数除以2(因为一天分为12个时辰),然后...
本节将详细探讨如何用Java编程语言实现一个精确到角的中文大写转小写数字的程序。 首先,我们需要了解中文大写数字与阿拉伯数字的对应关系: 1. 零:零 2. 一:壹 3. 二:贰 4. 三:叁 5. 四:肆 6. 五:伍 7. 六:...
### Java中实现浮点数的精确计算 在Java编程中,使用`float`和`double`类型进行浮点数计算时经常会遇到精度丢失的问题。这是因为浮点数在计算机内部是以二进制形式存储的,而某些十进制小数无法用二进制精确表示,...
Java控制台四则运算计算程序源码是一种基于Java编程语言实现的简单计算器,它能够处理任意长度的符合四则运算规则的数学表达式。在控制台上进行交互式操作,用户可以输入数学公式,程序会进行解析并计算出结果。这个...
开发者需要利用JFrame作为窗口容器,JButton表示各个数字和运算符按钮,JLabel显示计算结果。 2. Event Handling:为了响应用户的点击事件,需要实现ActionListener接口并覆盖其actionPerformed方法。每个按钮的...
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中的float和double类型是基于IEEE 754标准的,它们无法精确表示所有的小数。为了确保计算结果的精确性,我们需要使用`...
Java 语言中的数字格式化和大数处理是编程中非常重要的概念,特别是在处理财务、科学计算等需要精确数值表示的场景。本篇内容主要讲解了Java中的`NumberFormat`类和`DecimalFormat`类用于数字格式化,以及`...
本文将深入探讨如何在Java中保留两位小数,并覆盖四舍五入、浮点数精确计算以及避免科学记数法等问题。 #### 四舍五入保留两位小数 四舍五入是数学中的一个基本概念,指的是当一个数的小数部分小于等于0.5时,将其...
本文针对数字电路仿真平台中波形观测的需求,基于Java语言,尤其是Applet技术,深入探讨了波形观测的实现方案,并对相关技术应用进行了详细论述。 一、基于Java的数字电路仿真平台架构 随着Java技术的不断成熟,它...
此外,还可以使用边缘检测(如Canny算法)、轮廓检测等技术来定位字符区域,为OCR提供更精确的输入。 接着,OCR是图像字符识别的关键。OCR技术通过分析图像中的形状和结构,将图像中的字符转化为可编辑的文本。这里...
在这个Java实现中,"基于Java的BP网络数字识别法"可能包含以下关键组成部分: 1. 数据预处理:数字识别通常需要对图像进行预处理,如灰度化、二值化、降噪、尺寸归一化等,以便提取有意义的特征。 2. 神经网络架构...
5. **使用BigDecimal类**:在某些高级应用中,可以考虑使用类似Java的`BigDecimal`类,它提供了高精度的浮点数运算,但JavaScript原生并不支持,可能需要引入第三方库。 理解JavaScript浮点数计算的局限性并采用...
"nc.jar.zip_java 矩阵_java 计算_大数_大数计算 java_矩阵"这个标题和描述暗示了该压缩包可能包含一个Java库,专注于矩阵运算、大数计算以及其他数值计算方法。 首先,让我们来探讨一下矩阵运算。在Java中,标准库...
本文将详细探讨如何实现“金钱大写转数字类型,精确到分”的功能。 首先,我们需要理解汉字大写金额的构成。大写金额通常包括以下部分:零(零)、壹(1)、贰(2)、叁(3)、肆(4)、伍(5)、陆(6)、柒(7)...
舍入规则控制:当需要精确控制数字舍入规则时,如货币计算、统计分析等。 随机数生成:当需要生成伪随机数以支持随机性需求时,如游戏开发、密码生成等。 目标: 理解BigDecimal类的使用,并了解如何处理大数精度...
Java计算类是一个专门设计用于进行基本数学运算(加、减、乘、除)以及控制数字格式(四舍五入、保留特定位数的小数)的类。该类使用了Java中的BigDecimal类来确保在处理大数字或者要求精度高的计算时,能够保持计算...
在Java编程环境中,进行音频文件的频谱分析是一项复杂但重要的任务,特别是在音频处理和音乐信息检索领域。...通过这样的方式,你可以深入理解音频频谱分析的原理,并在Java环境中实现高效且精确的音频分析功能。