双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。转自
构造器描述 BigDecimal(int)创建一个具有参数所指定整数值的对象。 BigDecimal(double)创建一个具有参数所指定双精度值的对象。 BigDecimal(long)创建一个具有参数所指定长整数值的对象。 BigDecimal(String)创建一个具有参数所指定以字符串表示的数值的对象。
方法描述 add(BigDecimal)BigDecimal对象中的值相加,然后返回这个对象。 subtract(BigDecimal)BigDecimal对象中的值相减,然后返回这个对象。 multiply(BigDecimal)BigDecimal对象中的值相乘,然后返回这个对象。 divide(BigDecimal)BigDecimal对象中的值相除,然后返回这个对象。 toString()将BigDecimal对象的数值转换成字符串。 doublue()将BigDecimal对象中的值以双精度数返回。 floatValue()将BigDecimal对象中的值以单精度数返回。 longValue()将BigDecimal对象中的值以长整数返回。 intValue()将BigDecimal对象中的值以整数返回。
注意 1.由于一般数值类型,例如double,不能准确地代表16位有效数以上的数字,在使用BigDecimal时,应用BigDecimal(String)构造器创建对象才有意义。2.另外,BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。 BigDecimal的一些常用例子 //完整程序例子在本书配套资源目录Ch5中名为BigDecimalTestApp.Java //创建BigDecimal对象 BigDecimal bigNumber = new BigDecimal("89.1234567890123456789"); BigDecimal bigRate = new BigDecimal(1000); BigDecimal bigResult = new BigDecimal(); //对象bigResult的值为0.0 //对bigNumber的值乘以1000,结果 赋予bigResult bigResult = bigNumber.multiply(bigRate); System.out.println(bigResult.toString()); //或者System.out.println(bigResult); //显示结果:89123.4567890123456789000 //以双精度数返回bigNumber中的值 double dData = bigNumber.doublue(); System.out.println(dData); //结果:89.12345678901235
注意 1使用方法doublue()将对象bigNumber中的值以双精度数值返回时,将丢失数据的准确性。 2使用其他方法,如xxxValue()时均存在这个问题,使用时必须慎重。 3<!--[if !vml]--><!--[endif]-->3W BigDecimal用来对超过16有效位以上的数值进行运算和操作。 4所有的算术运算都通过调用其相应的方法进行。 5创建一个超过16有效位数的对象时,运用BigDecimal(String)才可避免丢失数字的精确度。
BigDecimal和格式化
由于NumberFormat类的format()方法可以使用BigDecimal对象作为其参数,可以利用BigDecimal对超出16位有效数字的货币值,百分值,以及一般数值进行格式化控制。
java四舍五入
package Test;
import java.math.BigDecimal; //引入这个包
public class Test { public static void main(String[] args) {
double i = 3.856;
// 舍掉小数取整 System.out.println("舍掉小数取整:Math.floor(3.856)=" + (int) Math.floor(i));
// 四舍五入取整 System.out.println("四舍五入取整:(3.856)=" + new BigDecimal(i).setScale(0, BigDecimal.ROUND_HALF_UP));
// 四舍五入保留两位小数 System.out.println("四舍五入取整:(3.856)=" + new BigDecimal(i).setScale(2, BigDecimal.ROUND_HALF_UP));
// 凑整,取上限 System.out.println("凑整:Math.ceil(3.856)=" + (int) Math.ceil(i));
// 舍掉小数取整 System.out.println("舍掉小数取整:Math.floor(-3.856)=" + (int) Math.floor(-i)); // 四舍五入取整 System.out.println("四舍五入取整:(-3.856)=" + new BigDecimal(-i).setScale(0, BigDecimal.ROUND_HALF_UP));
// 四舍五入保留两位小数 System.out.println("四舍五入取整:(-3.856)=" + new BigDecimal(-i).setScale(2, BigDecimal.ROUND_HALF_UP));
// 凑整,取上限 System.out.println("凑整(-3.856)=" + (int) Math.ceil(-i)); }
|
分享到:
相关推荐
在Java编程语言中,`BigInteger`和`BigDecimal`是两个重要的类,它们分别用于处理大整数和高精度浮点数。这两个类位于`java.math`包下,为开发者提供了超越基本数据类型(如int、long和double)的计算能力。在深入...
js中操作Bigdecimal类,包含所有java中bigdecimal的操作,加减乘除,四舍五入,比较等。
在Java编程语言中,BigDecimal是用于处理高精度和可配置精度的十进制数的类。在进行商业计算时,由于浮点数(double和float)存在精度问题,不能保证准确的结果,因此通常推荐使用BigDecimal来确保计算的精确性。本文...
Java SE程序 BigDecimal类Java SE程序 BigDecimal类Java SE程序 BigDecimal类Java SE程序 BigDecimal类Java SE程序 BigDecimal类Java SE程序 BigDecimal类Java SE程序 BigDecimal类Java SE程序 BigDecimal类Java SE...
在Java编程语言中,BigDecimal类是用于处理高精度、大范围浮点数的工具,它在需要精确计算的场景下非常关键。BigDecimal提供了避免浮点数运算中的精度损失的方法,适用于金融、会计等对精度有严格要求的领域。这篇...
JavaScript版的`BigDecimal`类库是基于Java原版`BigDecimal`的改编,旨在提供与Java版本相似的功能,以支持大整数和任意精度的浮点数计算。这个库通常包含以下关键特性: 1. **构造函数**:创建一个`BigDecimal`...
在Java编程中,`BigDecimal`类是用于表示和操作大整数或高精度浮点数的。它在处理财务计算、精确数学运算等场景中尤为关键,因为普通的`float`和`double`类型可能会因为精度问题导致计算结果不准确。今天我们将深入...
在Java编程中,当涉及到需要精确数值计算的场景时,我们通常会使用`BigDecimal`类。这是因为`float`和`double`类型虽然适用于科学计算和工程计算,但它们基于二进制浮点运算,不能保证完全精确的结果。而`BigDecimal...
在Java编程中,BigDecimal类是用于处理大数值和精确浮点计算的重要工具,尤其是在金融或会计领域,确保了计算的精确性。本示例代码主要关注如何使用BigDecimal进行四舍五入操作,以保留两位小数,并将金额从单位分...
jbehave-bigdecimal-converter 这个maven项目演示了JBehave允许BigDecimal(NumberConverter)使用的不良用法。使用Maven运行从终端,只需执行: mvn clean install 由于java.lang.RuntimeException: ********** ...
### Java 显示整数个位数 #### 知识点概览 1. **Swing 组件使用**:包括 `JFrame`、`JTextField` 和 `JLabel`。 2. **事件监听器**:使用 `ActionListener` 来响应文本框中的输入事件。 3. **数字处理**:提取整数...
JAVA基础:java.math.BigDecimal的使用方法. JAVA基础:java.math.BigDecimal的使用方法.
BigDecimal 类是 Java 中的一种数值类型,主要用于处理超过 16 位有效数字的数值运算。该类提供了多种构造器和方法,用于创建和操作 BigDecimal 对象。 构造器 BigDecimal 类提供了四种构造器,用于创建不同的 ...
Java Bigdecimal使用原理详解 Java Bigdecimal是Java语言中用于精确计算的类,它可以完善float和double类无法进行精确计算的缺憾。BigDecimal类位于java.math类包下,提供了多种构造函数和方法来实现精确计算。 ...
Java中的`BigDecimal`类是用于表示和操作高精度浮点数的重要工具,尤其适用于需要进行精确计算的场景,如财务和货币计算。由于基本数据类型`double`和`float`在进行大数值或高精度计算时可能会导致精度丢失,因此`...
- 对于数字类型,如`BigDecimal`、`BigInteger`等,也直接转换为相应的JSON数值表示形式。 2. **数组处理**: - 数组被转换为JSON数组。每个数组元素都通过递归调用`object2json`进行处理。 3. **集合处理**: ...
java.math.BigDecimal 操作类,包含加减乘除、String型加减乘除精度格式化转换计算等
使用任意精度的高级Java BigDecimal数学函数( pow , sqrt , log , sin ,...)。 另请参阅官方的。大十进制数学BigDecimalMath类为以下各项提供了有效且准确的实现: log(BigDecimal, MathContext) exp...
9. **避免使用浮点数进行精确计算**:由于浮点数计算的不精确性,书中建议在需要精确结果的情况下使用BigDecimal类。 10. **优先考虑使用标准库**:鼓励开发者充分利用Java标准库提供的功能,如Collections框架、I/...