首页 > 编程语言 >Java API:BigDecimal

Java API:BigDecimal

时间:2024-09-02 21:04:52浏览次数:4  
标签:舍入 Java BigDecimal System API println ROUND out

Java API:BigDecimal

目录

1 BigDecimal

  • BigDecimal类使用户完全控制舍入行为。 如果未指定舍入模式,并且无法表示确切的结果,则抛出异常; 否则,可以通过向操作提供适当的MathContext对象来进行计算,以选择精度和舍入模式。 在这两种情况下,都提供了八种舍入方式来控制舍入。 使用此类中的整数字段(如ROUND_HALF_UP )表示舍入模式已经过时了; 应该使用RoundingMode 枚举 (如RoundingMode.HALF_UP)的枚举值。

  • 构造方法:

    BigDecimal divide = bd1.divide(参与运算的对象,小数点后精确到多少位,舍入模式);
    
  • 常用方法

    Modifier and Type Field and Description
    static int ROUND_DOWN 舍入模式向零舍入。
    static int ROUND_FLOOR 舍入模式向负无穷大转弯。
    static int ROUND_HALF_UP 四舍五入模式向“最近邻居”转弯,除非两个邻居都是等距的,在这种情况下是圆括弧的。
    static int ROUND_UP 舍入模式从零开始。
    static BigDecimal TEN 值为10,标度为0。
    static BigDecimal ZERO 值为0,标度为0。

2 示例

package com.fcarey.api;

import java.math.BigDecimal;

public class MyBigDecimal {
    public static void main(String[] args) {
        BigDecimal a = new BigDecimal(2.46);
        BigDecimal b = new BigDecimal(1.23);
        System.out.println(a.add(b));  // 输出:3.68999999999999994...
        System.out.println(a.subtract(b));  // 输出:1.22999999999999998223643160...
        System.out.println(a.multiply(b));  // 输出:3.0257999999999999126032435015076777...
        System.out.println(a.divide(b));  // 输出:2
        // 如果要精确运算需要使用字符串的构造
        BigDecimal c = new BigDecimal("2.46");
        BigDecimal d = new BigDecimal("1.23");
        System.out.println(c.add(d));  // 输出:3.69
        System.out.println(c.subtract(d));  // 输出:1.23
        System.out.println(c.multiply(d));  // 输出:3.0258
        System.out.println(c.divide(d));  // 输出:2
        BigDecimal e = new BigDecimal("10.0");
        BigDecimal f = new BigDecimal("3.0");
        System.out.println(e.divide(f,2,BigDecimal.ROUND_UP));;  // 输出:3.34
        System.out.println(e.divide(f,2,BigDecimal.ROUND_FLOOR));;  // 输出:3.33
        System.out.println(e.divide(f,2,BigDecimal.ROUND_HALF_UP));;  // 输出:3.33
    }
}

标签:舍入,Java,BigDecimal,System,API,println,ROUND,out
From: https://www.cnblogs.com/f-carey/p/18386931

相关文章

  • 浙江省会计人员继续教育刷课脚本-JavaScript编写
    脚本学习网站:浙江省会计人员继续教育:https://jxjy.czt.zj.gov.cn/front/jxjy.html脚本地址:浙江省会计人员继续教育-刷课脚本:https://greasyfork.org/zh-CN/scripts/506412-浙江省会计人员继续教育-刷课脚本教程1.插件安装(以MicrosoftEdge浏览器为例)打开最中间那个蓝色......
  • Java中的一些思想
    Java中的一些思想目录Java中的一些思想1分类思想2分包思想3类与类之间的访问4static关键字4.1static修饰的特点4.2注意事项5信息管理系统5.1系统说明5.1.1学生管理系统5.1.2老师管理系统5.2实现步骤5.3代码实现5.3.1Student5.3.2Teacher1分类思想分工协作,专人......
  • java ThreadLocal做线程隔离
    `ThreadLocal`类提供了线程局部变量,每个线程都可以独立地访问自己的变量副本,而不会影响其他线程的副本。这在多线程环境中非常有用,可以避免线程间的数据共享和竞争条件,提高程序的线程安全性。###ThreadLocal的用法:1.**创建ThreadLocal对象**:首先需要创建一个`ThreadLocal`......
  • java并发 第四章共享模型之管程 3 synchronized 原理
    1.轻量级锁轻量级锁的使用场景:如果一个对象虽然有多线程要加锁,但加锁的时间是错开的(也就是没有竞争),那么可以使用轻量级锁来优化。轻量级锁对使用者是透明的,即语法仍然是synchronized假设有两个方法同步块,利用同一个对象加锁 staticfinalObjectobj=newObject();......
  • 浙江省住房和城乡建设行业继续教育刷课脚本-JavaScript编写
    脚本学习网站:https://zj.zjjsrc.cn/web/web_toUserSignUp.page脚本地址:浙江省住房和城乡建设行业专业技术人员继续教育-刷课脚本:https://greasyfork.org/zh-CN/scripts/506406-浙江省住房和城乡建设行业专业技术人员继续教育-刷课脚本教程1.插件安装(以MicrosoftEdge浏览器......
  • 浙江省建设人才远程继续教育平台刷课脚本-JavaScript编写
    脚本学习网站:https://zj.zjjsrc.cn/web/web_toUserSignUp.page脚本地址:浙江省建设人才远程继续教育平台刷课脚本:https://greasyfork.org/zh-CN/scripts/506406-浙江省住房和城乡建设行业专业技术人员继续教育-刷课脚本教程1.插件安装(以MicrosoftEdge浏览器为例)打开最中间......
  • 深入理解HTTP连接池及其在Java中的应用
    更多内容前往个人网站:孔乙己大叔        在现代的Web开发中,HTTP请求已经成为应用程序与外部服务交互的主要方式。随着微服务架构的流行,一个应用可能需要同时与多个外部服务进行通信,这导致HTTP请求的数量显著增加。为了提升性能和资源利用率,HTTP连接池成为了一个不可......
  • 【网络安全 | Java代码审计】Code-Breaking Puzzles-javacon
    未经许可,不得转载。源码:https://www.leavesongs.com/media/attachment/2018/11/23/challenge-0.0.1-SNAPSHOT.jar,下载至桌面。考察知识点:SpEL注入正文执行命令运行环境:java-jarC:\Users\86177\Desktop\challenge-0.0.1-SNAPSHOT.jar浏览器访问localhost:8080使用JD-......
  • Java生产环境下性能监控与调优指南
    Java生产环境下性能监控与调优指南目录引言Java性能监控2.1性能监控工具2.2关键性能指标Java应用性能调优3.1内存调优3.2垃圾回收调优3.3多线程优化3.4数据库连接优化3.5代码级优化结语1.引言在Java应用的生产环境下,性能监控及调优显得至关重要,它们......
  • Java线程生命周期:Java线程生命周期全景解读
    1.线程生命周期概述:不仅仅是状态转换在多线程编程中,理解线程的生命周期对于编写有效、高效的代码至关重要。线程生命周期通常描述了线程从创建到死亡的一系列状态变化过程,但其实不仅仅局限于这些状态的简单转换。线程生命周期的理解应该考虑系统资源的分配、线程调度、同步、通信......