package com.util;
import java.math.BigDecimal;
/**
* 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精
* 确的浮点数运算,包括加减乘除和四舍五入。
*/
public class Arith{
//默认除法运算精度
private static final int DEF_DIV_SCALE = 10;
//这个类不能实例化
private Arith(){
}
/**
* 提供精确的 n 次幂
* @param v1 底数
* @param n n次幂
* @return v1的n次幂
*/
public static double pow(double v1,int n){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
return b1.pow(n).doubleValue();
}
/**
* 提供精确的加法运算。
* @param v1 被加数
* @param v2 加数
* @return 两个参数的和
*/
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();
}
/**
* 提供精确的减法运算。
* @param v1 被减数
* @param v2 减数
* @return 两个参数的差
*/
public static double sub(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2).doubleValue();
}
/**
* 提供精确的乘法运算。
* @param v1 被乘数
* @param v2 乘数
* @return 两个参数的积
*/
public static double mul(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.multiply(b2).doubleValue();
}
/**
* 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
* 小数点以后10位,以后的数字四舍五入。
* @param v1 被除数
* @param v2 除数
* @return 两个参数的商
*/
public static double div(double v1,double v2){
return div(v1,v2,DEF_DIV_SCALE);
}
/**
* 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指
* 定精度,以后的数字四舍五入。
* @param v1 被除数
* @param v2 除数
* @param scale 表示表示需要精确到小数点以后几位。
* @return 两个参数的商
*/
public static double div(double v1,double v2,int scale){
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,BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* 提供精确的小数位四舍五入处理。
* @param v 需要四舍五入的数字
* @param scale 小数点后保留几位
* @return 四舍五入后的结果
*/
public static double round(double v,int scale){
if(scale<0){
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b = new BigDecimal(Double.toString(v));
BigDecimal one = new BigDecimal("1");
return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
}
分享到:
相关推荐
java 四舍五入java 四舍五入java 四舍五入java 四舍五入java 四舍五入java 四舍五入java 四舍五入java 四舍五入java 四舍五入
Java 四舍五入方法详解 Java 四舍五入方法是指在 Java 语言中对数字进行四舍五入操作的方法。四舍五入是一种常用的数字截断方法,经常用于金融、科学计算和其他领域。 在 Java 语言中,四舍五入方法可以通过多种...
### Java四舍五入的基础概念 四舍五入是指将一个数字舍去小数部分时,如果小数部分小于等于0.4,则向下取整;如果小数部分大于等于0.6,则向上取整;如果小数部分正好为0.5,则根据不同的四舍五入规则进行处理...
在这个场景中,标题"四舍五入_四舍五入问题_源码"暗示我们将讨论如何在编程中实现四舍五入操作,特别是与计算苹果单价和数量相关的总价问题。描述提到“输入苹果的单价及购买的数量,计算总价,分别显示总价的总价...
浮点数任意保留数位小数但不需四舍五入小程序
提供两个思路,一个是float转int这种。另外就是就是string转int的除法计算。 这只是两个简单的小例子。可以借鉴看看。
以下是一些常用的Java四舍五入保留小数的实现方法: ### 方法一:使用`BigDecimal` `BigDecimal`是Java中处理高精度、大范围数值的一个类,它提供了丰富的算术运算方法,包括四舍五入。以下是使用`BigDecimal`进行...
Java 中 DecimalFormat 四舍五入用法详解 DecimalFormat 是 Java 中 NumberFormat 的一个具体子类,用于格式化十进制数字。它可以支持不同类型的数,包括整数、定点数、科学记数法表示的数、百分数和金额等这些内容...
Java中的四舍五入与保留位示例 Java中的四舍五入是指对数字进行舍入操作,以达到指定的位数精度。四舍五入规则是指在小数点后保留指定位数的数字,如果舍弃位大于5则进位,否则舍弃。在Java中,四舍五入可以使用...
在Java中,可以使用`BigDecimal`类来实现四舍五入并保留两位小数的功能。`BigDecimal`类提供了非常强大的高精度算术运算能力,非常适合处理财务计算等场景。 **示例代码**: ```java import java.math.BigDecimal;...
### 四舍五入中小数位问题:深入探讨与科学解决方案 #### 一、四舍五入的传统理解及其局限性 在数学运算中,四舍五入是一种常见的处理小数精度的方法,尤其当数据需要简化或适配特定显示格式时。传统上,四舍五入...
在处理金融数据时,精确到一定小数位的四舍五入操作是必需的,以避免因精度问题导致的计算误差。在Python中,我们可以使用内置的`round`函数,但在处理金钱时,最好使用`decimal`模块,因为它提供了更高精度的浮点数...
根据给定的信息,本文将详细解释如何在Oracle数据库中计算从2000年1月1日至今经过了多少个月和多少个星期,并且结果需要进行四舍五入处理。 ### Oracle数据库中的日期函数 在Oracle数据库中,进行日期计算是非常...
在Java编程语言中,对数字进行四舍五入并保留指定的小数位数是常见的需求。以下是五种不同的方法来实现这一目标: 1. **使用`BigDecimal`类**: `BigDecimal`是Java中用于处理高精度、大数值计算的类,提供了多种...
标题 "sishewuru.rar_四舍五入" 暗示了我们关注的主题是关于数值计算中的四舍五入操作。在这个主题下,我们将深入探讨四舍五入的定义、用途、方法以及在编程中实现四舍五入的常见算法。 四舍五入是一种在数学和...
加、减、乘、除、平方、四舍六入五成双
在Java编程语言中,四舍五入是一种常见的数学操作,特别是在处理浮点数时,我们可能需要将结果精确到特定的小数位数。本示例将深入讲解如何使用Java实现四舍五入并保留两位小数。这在财务计算、统计分析和其他需要...
在处理数字格式化时,有时会遇到四舍五入的问题。本篇文章将深入探讨`<fmt:formatNumber>`标签的工作原理,以及如何解决四舍六入的问题。 首先,`<fmt:formatNumber>`标签是JSTL Format库的一部分,它允许我们在JSP...