`
starbhhc
  • 浏览: 658415 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

BigDecimal计算大数字

UP 
阅读更多
import java.math.BigDecimal;   
import java.util.Stack;   
  
/** A trivial reverse-polish stack-based calculator for big numbers */  
public class BigNumCalc {   
  
  /** an array of Objects, simulating user input */  
  public static Object[] testInput = {   
    new BigDecimal("3419229223372036854775807.23343"),   
    new BigDecimal("2.0"),   
    "*",   
  };   
  
  public static void main(String[] args) {   
    BigNumCalc calc = new BigNumCalc();   
    System.out.println(calc.calculate(testInput));   
  }   
  
  Stack s = new Stack();   
  
  public BigDecimal calculate(Object[] input) {   
    BigDecimal tmp;   
    for (int i = 0; i < input.length; i++) {   
      Object o = input[i];   
      if (o instanceof BigDecimal) {   
        s.push(o);   
      } else if (o instanceof String) {   
        switch (((String)o).charAt(0)) {   
        // + and * are commutative, order doesn't matter   
        case '+':   
          s.push(((BigDecimal)s.pop()).add((BigDecimal)s.pop()));   
          break;   
        case '*':   
          s.push(((BigDecimal)s.pop()).multiply((BigDecimal)s.pop()));   
          break;   
        // - and /, order *does* matter   
        case '-':   
          tmp = (BigDecimal)s.pop();   
          s.push(((BigDecimal)s.pop()).subtract(tmp));   
          break;   
        case '/':   
          tmp = (BigDecimal)s.pop();   
          s.push(((BigDecimal)s.pop()).divide(tmp,   
            BigDecimal.ROUND_UP));   
          break;   
        default:   
          throw new IllegalStateException("Unknown OPERATOR popped");   
        }   
      } else {   
        throw new IllegalArgumentException("Syntax error in input");   
      }   
    }   
    return (BigDecimal)s.pop();   
  }   
}   
  
分享到:
评论

相关推荐

    MyEditTextApplication输入框BigDecimal计算价格

    本项目“MyEditTextApplication”专注于使用BigDecimal进行输入框内的价格计算,确保计算结果的高度精确,尤其是在处理小数点后的多位数字时。 BigDecimal是Java提供的一个大数类,它可以用来进行精确的浮点数运算...

    BigDecimal计算

    在Java编程语言中,`BigDecimal`类是用于表示和操作大数(通常涉及财务或精确数学计算)的重要工具。由于浮点数(如`float`和`double`)在计算机中是以近似值存储的,这可能导致计算结果的不精确性,尤其是在进行...

    BigDecimal加减乘除计算

    总之,BigDecimal 是 Java 中用于高精度计算的关键工具,通过其提供的方法和舍入模式,可以确保在财务等对精度有严格要求的场景下进行准确的计算。在实际编程中,应优先使用字符串构造 BigDecimal 对象,并合理设置...

    javascript版BigDecimal类库

    JavaScript版的`BigDecimal`类库是基于Java原版`BigDecimal`的改编,旨在提供与Java版本相似的功能,以支持大整数和任意精度的浮点数计算。这个库通常包含以下关键特性: 1. **构造函数**:创建一个`BigDecimal`...

    BigDecimal.js.zip

    在JavaScript编程语言中,处理大型数字的精确计算是一项挑战,因为JavaScript的内置Number类型在进行大整数或高精度浮点数运算时容易出现精度损失。为了解决这个问题,开发者通常会引入第三方库,比如"BigDecimal.js...

    运用BigDecimal精确计算

    舍入模式决定了在计算过程中如何处理超出精度的数字,例如`RoundingMode.HALF_UP`(四舍五入)、`RoundingMode.DOWN`(向下取整)等。 4. 比较操作: `BigDecimal`提供了`compareTo()`方法用于比较两个`BigDecimal...

    Java中BigDecimal的加减乘除、比较大小与使用注意事项

    在Java编程中,当涉及到需要精确数值计算的场景时,我们通常会使用`BigDecimal`类。这是因为`float`和`double`类型虽然适用于科学计算和工程计算,但它们基于二进制浮点运算,不能保证完全精确的结果。而`BigDecimal...

    java BigDecimal操作

    在Java编程语言中,BigDecimal类是用于处理高精度、大范围浮点数的工具,它在需要精确计算的场景下非常关键。BigDecimal提供了避免浮点数运算中的精度损失的方法,适用于金融、会计等对精度有严格要求的领域。这篇...

    BigDecimal向Double转换

    它可以处理非常大的数字以及需要精确计算的场景,例如财务计算中常见的货币值。 ### 1.2 BigDecimal的主要用途 - **金融计算**:由于货币计算通常需要非常高的精度,BigDecimal非常适合这类应用场景。 - **科学...

    js_bigdecimal_1_0_1.zip

    因此,"js_bigdecimal_1_0_1"库可能是将Java的BigDecimal概念移植到了JavaScript中,以便在Web开发中进行高精度计算。 这个库可能包含以下功能: 1. **大数加减乘除**:支持两个大数之间的加法、减法、乘法和除法...

    java-BigInteger-BigDecimal类源码

    在Java编程语言中,`BigInteger`和`BigDecimal`是两个重要的类,它们分别用于处理大整数和高精度浮点数。这两个类位于`java.math`包下,为开发者提供了超越基本数据类型(如int、long和double)的计算能力。在深入...

    BigDecimal加减乘除计算.pdf

    在Java编程语言中,`BigDecimal`类用于处理大整数和高精度小数的运算,以确保计算结果的精确性。在Python中虽然没有直接对应的类,但理解`BigDecimal`的工作原理对于处理需要精确计算的场景是很有帮助的。本篇文章将...

    BigInteger BigDecimal 使用

    在Java编程语言中,`BigInteger`和`BigDecimal`是两个重要的类,用于处理大整数和高精度浮点数运算。这两个类属于`java.math`包,为开发者提供了超越普通`int`、`long`以及`float`和`double`类型的数值计算能力。 `...

    Java编程BigDecimal用法实例分享

    BigDecimal类提供了对大数字的操作,可以精确地计算货币值等。 BigDecimal类的实现是基于BigInteger类的,它们都是Java标准库中的核心类。BigInteger类是针对大整数的处理类,而BigDecimal类则是针对大小数的处理类...

    bigDecimal.js:支持大量操作JavaScript库

    BigDecimal.js 是一个专门为JavaScript设计的高精度数值计算库,它主要解决了JavaScript在处理大整数和高精度浮点数时的精度问题。JavaScript原生的数据类型Number在处理超过一定范围的数字时会出现精度丢失,这对于...

    BigDecimal详解、代码示例和经常遇到的坑

    1. **任意精度**:`BigDecimal`可以存储和处理非常大的数值以及任意长度的小数部分,这对于需要极高精度的领域如金融计算特别有用。 2. **精确计算**:通过提供一系列运算方法(如加、减、乘、除),`BigDecimal`...

    bignumber.min.js下载

    众所周知,数字运算的精度问题是一个让人很旦疼的问题,而java中有BigDecimal类对数字精度问题进行处理,经过一番查询,发现前段有一个宝藏精度处理类bignumber。亲测好用。 众所周知,数字运算的精度问题是一个让人...

    Java BigDecimal使用及基本运算(推荐)

    BigDecimal 类在 Java 中是用于处理高精度和大数值计算的,它确保了在计算过程中不会因为浮点数的精度问题而导致结果错误。由于 double 和 float 类型在处理大数或需要绝对精确计算的场景下存在精度损失,因此 ...

    处理较大数字的PHP库.zip

    在PHP里提供了大数字的操作类,有的类是用于高精度计算,其中BigInteger类是针对大整数的处理类,而BigDecimal类则是针对大小数的处理类。下边我们介绍BigDecimal类:BigDecimal 的实现利用到了BigInteger,不同的是...

    Java 计算类

    该类使用了Java中的BigDecimal类来确保在处理大数字或者要求精度高的计算时,能够保持计算的准确性。Java中的BigDecimal类支持不可变的、任意精度的十进制数。BigDecimal适用于那些需要精确控制数字精度和舍入行为的...

Global site tag (gtag.js) - Google Analytics