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进行输入框内的价格计算,确保计算结果的高度精确,尤其是在处理小数点后的多位数字时。 BigDecimal是Java提供的一个大数类,它可以用来进行精确的浮点数运算...
在Java编程语言中,`BigDecimal`类是用于表示和操作大数(通常涉及财务或精确数学计算)的重要工具。由于浮点数(如`float`和`double`)在计算机中是以近似值存储的,这可能导致计算结果的不精确性,尤其是在进行...
总之,BigDecimal 是 Java 中用于高精度计算的关键工具,通过其提供的方法和舍入模式,可以确保在财务等对精度有严格要求的场景下进行准确的计算。在实际编程中,应优先使用字符串构造 BigDecimal 对象,并合理设置...
JavaScript版的`BigDecimal`类库是基于Java原版`BigDecimal`的改编,旨在提供与Java版本相似的功能,以支持大整数和任意精度的浮点数计算。这个库通常包含以下关键特性: 1. **构造函数**:创建一个`BigDecimal`...
在JavaScript编程语言中,处理大型数字的精确计算是一项挑战,因为JavaScript的内置Number类型在进行大整数或高精度浮点数运算时容易出现精度损失。为了解决这个问题,开发者通常会引入第三方库,比如"BigDecimal.js...
舍入模式决定了在计算过程中如何处理超出精度的数字,例如`RoundingMode.HALF_UP`(四舍五入)、`RoundingMode.DOWN`(向下取整)等。 4. 比较操作: `BigDecimal`提供了`compareTo()`方法用于比较两个`BigDecimal...
在Java编程中,当涉及到需要精确数值计算的场景时,我们通常会使用`BigDecimal`类。这是因为`float`和`double`类型虽然适用于科学计算和工程计算,但它们基于二进制浮点运算,不能保证完全精确的结果。而`BigDecimal...
在Java编程语言中,BigDecimal类是用于处理高精度、大范围浮点数的工具,它在需要精确计算的场景下非常关键。BigDecimal提供了避免浮点数运算中的精度损失的方法,适用于金融、会计等对精度有严格要求的领域。这篇...
它可以处理非常大的数字以及需要精确计算的场景,例如财务计算中常见的货币值。 ### 1.2 BigDecimal的主要用途 - **金融计算**:由于货币计算通常需要非常高的精度,BigDecimal非常适合这类应用场景。 - **科学...
因此,"js_bigdecimal_1_0_1"库可能是将Java的BigDecimal概念移植到了JavaScript中,以便在Web开发中进行高精度计算。 这个库可能包含以下功能: 1. **大数加减乘除**:支持两个大数之间的加法、减法、乘法和除法...
在Java编程语言中,`BigInteger`和`BigDecimal`是两个重要的类,它们分别用于处理大整数和高精度浮点数。这两个类位于`java.math`包下,为开发者提供了超越基本数据类型(如int、long和double)的计算能力。在深入...
在Java编程语言中,`BigDecimal`类用于处理大整数和高精度小数的运算,以确保计算结果的精确性。在Python中虽然没有直接对应的类,但理解`BigDecimal`的工作原理对于处理需要精确计算的场景是很有帮助的。本篇文章将...
在Java编程语言中,`BigInteger`和`BigDecimal`是两个重要的类,用于处理大整数和高精度浮点数运算。这两个类属于`java.math`包,为开发者提供了超越普通`int`、`long`以及`float`和`double`类型的数值计算能力。 `...
BigDecimal类提供了对大数字的操作,可以精确地计算货币值等。 BigDecimal类的实现是基于BigInteger类的,它们都是Java标准库中的核心类。BigInteger类是针对大整数的处理类,而BigDecimal类则是针对大小数的处理类...
BigDecimal.js 是一个专门为JavaScript设计的高精度数值计算库,它主要解决了JavaScript在处理大整数和高精度浮点数时的精度问题。JavaScript原生的数据类型Number在处理超过一定范围的数字时会出现精度丢失,这对于...
1. **任意精度**:`BigDecimal`可以存储和处理非常大的数值以及任意长度的小数部分,这对于需要极高精度的领域如金融计算特别有用。 2. **精确计算**:通过提供一系列运算方法(如加、减、乘、除),`BigDecimal`...
众所周知,数字运算的精度问题是一个让人很旦疼的问题,而java中有BigDecimal类对数字精度问题进行处理,经过一番查询,发现前段有一个宝藏精度处理类bignumber。亲测好用。 众所周知,数字运算的精度问题是一个让人...
BigDecimal 类在 Java 中是用于处理高精度和大数值计算的,它确保了在计算过程中不会因为浮点数的精度问题而导致结果错误。由于 double 和 float 类型在处理大数或需要绝对精确计算的场景下存在精度损失,因此 ...
在PHP里提供了大数字的操作类,有的类是用于高精度计算,其中BigInteger类是针对大整数的处理类,而BigDecimal类则是针对大小数的处理类。下边我们介绍BigDecimal类:BigDecimal 的实现利用到了BigInteger,不同的是...
该类使用了Java中的BigDecimal类来确保在处理大数字或者要求精度高的计算时,能够保持计算的准确性。Java中的BigDecimal类支持不可变的、任意精度的十进制数。BigDecimal适用于那些需要精确控制数字精度和舍入行为的...