`
xueshuanglong
  • 浏览: 24327 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

精确计算

UP 
阅读更多
//表示需要精确到小数点以后几位
public static final int scale = 2;
/**
     * 提供精确的加法运算。
     * @param v1 被加数
     * @param v2 加数
     * @return 两个参数的和
     */

public static double addDouble(double d1,double d2){
  BigDecimal bd1 = new BigDecimal(Double.toString(d1));
  BigDecimal bd2 = new BigDecimal(Double.toString(d2));
  return bd1.add(bd2).doubleValue();
}
/**
     * 提供精确的减法运算。
     * @param v1 被减数
     * @param v2 减数
     * @return 两个参数的差
     */

public static double subDouble(double d1,double d2){
  BigDecimal bd1 = new BigDecimal(Double.toString(d1));
  BigDecimal bd2 = new BigDecimal(Double.toString(d2));
  return bd1.subtract(bd2).doubleValue();
}
/**
     * 提供精确的乘法运算。
     * @param v1 被乘数
     * @param v2 乘数
     * @return 两个参数的积
     */

public static double mulDouble(double d1,double d2){
  BigDecimal bd1 = new BigDecimal(Double.toString(d1));
  BigDecimal bd2 = new BigDecimal(Double.toString(d2));
  return bd1.multiply(bd2).doubleValue();
}
/**
     * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
     * 小数点以后10位,以后的数字四舍五入。
     * @param v1 被除数
     * @param v2 除数
     * @return 两个参数的商
     */

public static double divDouble(double d1,double d2){
  return div(d1,d2,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();
    }

分享到:
评论

相关推荐

    JavaScript小数点精确计算

    JavaScript中的小数点精确计算是开发者经常会遇到的一个挑战。由于JavaScript内部使用的是IEEE 754标准来存储和处理浮点数,这可能导致在进行小数运算时出现精度丢失问题,尤其是在涉及大数字或者循环计算时。本篇将...

    2+22+222+2222精确计算

    标题提到的"2+22+222+2222+22......2222精确计算"是一个典型的涉及大数运算的例子。当我们面对这样的无限序列时,传统的整数或浮点数类型无法存储或计算,因为它们有固定的位宽限制。例如,在大多数编程语言中,int...

    Double类型精确计算

    Double类型精确计算,加法,减肥,乘除

    SQL函数 根据出生日期精确计算年龄

    sql函数 可用于pb调用,根据生日日期,自动精确计算年龄。返回格式为xx岁xx月xx天 不受闰年影响

    运算工具类实现精确计算

    java运算工具类,可以处理浮点数的精度丢失问题,可以实现精确计算,常用公共方法抽取,常用工具类11111111111111111111111111111111111111111111111111111111111111111111111111

    Java实现的浮点类的精确计算

    在编程领域,浮点数计算由于涉及到二进制表示法,常常会出现精度丢失的问题,这在需要精确计算的场景下尤为棘手。Java作为一种广泛使用的编程语言,也面临同样的挑战。为了解决这个问题,我们可以利用特定的设计和...

    精确计算系统启动时间

    精确计算系统启动时间是计算机性能优化领域中的一个重要指标,它涉及到操作系统、硬件配置以及各种启动优化技术。在本文中,我们将深入探讨如何实现这一功能,以及BootRacer 3.8这一工具在其中的作用。 首先,系统...

    时间精确计算程序.rar

    时间精确计算程序是一个重要的计算机应用领域,涉及到计算机科学、软件工程和算法等多个方面。这个程序的设计目的是为了在数字系统中实现高精度的时间测量和计算,这对于科学研究、数据分析、系统性能测试以及实时...

    test_JS-数字精确计算_

    在JavaScript编程语言中,数字的精确计算确实是一个挑战,尤其是涉及到浮点数操作时。由于JavaScript内部使用IEEE 754标准存储和处理浮点数,这可能导致精度损失,尤其是在进行加减乘除等数学运算时。标题"test_JS-...

    易语言精确计算π值

    "易语言精确计算π值"的源码主题,涉及到数学中的一个重要常数π(派),以及如何利用编程技术进行精确计算。 π(派)是圆周率,代表一个圆的周长与其直径之比,是一个无理数,其值约为3.14159。在实际应用中,...

    易语言精确计算π值源码.rar

    《易语言精确计算π值源码解析》 易语言,作为我国自主研发的一种编程语言,以其易学易用的特点,深受初学者和业余编程爱好者的喜爱。本篇文章将深入探讨一个使用易语言编写的精确计算π值的源码,旨在帮助读者理解...

    椭圆周长公式精确计算和证明

    椭圆周长的精确计算和证明是一个复杂的问题,涉及到几何学和微积分的基本概念。在本文中,作者董清华提出了一种基于“基”、“界”和“相似形”的理论来处理几何图形在均匀变化中的问题,特别是对于椭圆周长的计算。...

    精确计算飞轮转动惯量、直流电动机的动态数学模型

    在IT行业中,尤其是在自动化控制和机械工程的交叉领域,理解并掌握飞轮转动惯量的精确计算以及直流电动机的动态数学模型至关重要。这些知识对于设计高效、安全的汽车制动系统,以及构建精确的试验台模拟有着深远的...

    云计算-同杆双回线故障精确计算.pdf

    【云计算-同杆双回线故障精确计算】 随着电力系统的快速发展和电压等级的提升,同杆双回线线路在电力传输中的应用日益广泛。这种线路结构由于其特殊性,在发生故障时,可能导致多种复杂的故障类型,对电力系统的...

    JavaScript 精确计算(2)

    在JavaScript编程语言中,精确计算是一项重要的需求,特别是在金融、科学计算或任何需要高精度数值操作的场景。由于JavaScript的内置Number类型使用浮点数表示,这可能导致在进行大数运算时出现微小的误差。标题...

    AVR软件延时精确计算指导

    ### AVR软件延时精确计算指导 #### 一、引言 在嵌入式系统开发过程中,精确控制延时时间对于实现各种功能至关重要。本文将详细介绍如何在AVR单片机上实现精确的软件延时计算,包括理解影响延时时间的各种因素、...

    邻近辐射的精确计算研究

    ### 邻近辐射的精确计算研究知识点 #### 1. 邻近辐射概念及其重要性 邻近辐射是指地形起伏复杂地区,地表像素由于邻近地表单元不同朝向的影响而接收到的非直接太阳辐射。这种辐射主要来自于邻近地物的反射。在平坦...

    多绳摩擦提升系统井口相对位置的精确计算

    在确定多绳摩擦提升系统井口相对位置时,相关设计手册计算公式均存在着一定误差,...本文针对上述问题,给出了计算提升系统井口相对位置的精确公式,并应用平面解析几何知识,对围抱角计算公式进行了推导,提高了计算精度。

    精确计算100!的值.pdf

    "精确计算100!的值.pdf" 本资源摘要信息来自《软件设计基础-C++》课程设计报告,报告的主要内容是编写程序精确计算100!的值。下面是从报告中提取的知识点: 1. 软件设计基础-C++课程设计目的: 软件设计基础-C++...

Global site tag (gtag.js) - Google Analytics