当前位置: 首页 > news >正文

高精度十进制数运算

BigDecimal 是 Java 中用于进行高精度十进制数运算的类,位于 java.math 包下

字符串创建 BigDecimal 对象是最推荐的方式


 BigDecimal num1 = new BigDecimal("123.456");
BigDecimal num1 = new BigDecimal("10.5");
        BigDecimal num2 = new BigDecimal("2.5");

        // 加法
        BigDecimal sum = num1.add(num2);
        // 减法
        BigDecimal difference = num1.subtract(num2);
        // 乘法
        BigDecimal product = num1.multiply(num2);
        // 除法,需要指定精度和舍入模式
        BigDecimal quotient = num1.divide(num2, 2, BigDecimal.ROUND_HALF_UP);
  • ROUND_UP:向远离零的方向舍入。
  • ROUND_DOWN:向零的方向舍入。
  • ROUND_HALF_UP:四舍五入。
  • ROUND_HALF_DOWN:五舍六入。
  • int result = num1.compareTo(num2);
            if (result > 0) {
                System.out.println("num1 大于 num2");
            } else if (result < 0) {
                System.out.println("num1 小于 num2");
            } else {
                System.out.println("num1 等于 num2");
            }

import java.math.BigDecimal;
import java.util.Scanner;

public class Main {
    /**
     * 主函数入口
     * 本程序接收用户输入的一个整数和一个BigDecimal类型的数,然后计算2的整数次方乘以输入的BigDecimal数,并输出结果
     * 使用BigDecimal是为了处理大数运算,并且可以设置输出的精度和舍入模式,以保证计算结果的精确性
     * @param args 命令行参数
     */
    public static void main(String[] args) {
        // 创建Scanner对象,用于接收用户输入
        Scanner sc = new Scanner(System.in);
        
        // 接收用户输入的整数
        int n = sc.nextInt();
        
        // 接收用户输入的BigDecimal类型的数
        BigDecimal d = sc.nextBigDecimal();
        
        // 创建一个值为2的BigDecimal对象,用于后续的指数计算
        BigDecimal m = new BigDecimal("2");
        
        // 计算2的n次方乘以d,不保留小数点后的位数,采用四舍五入的方式进行舍入
        System.out.println(m.pow(n).multiply(d).setScale(0, BigDecimal.ROUND_HALF_UP));
    }
}

 

http://www.dtcms.com/a/99388.html

相关文章:

  • Python库()
  • 【人工智能之大模型】哪些因素会导致大语言模型LLM的偏见?
  • 淘宝店铺清单及全商品数据、关键词检索 API 介绍
  • 金融级密码管理器——跨设备同步的端到端加密方案
  • [创业之路-343]:创业:一场认知重构与组织进化的双向奔赴
  • c++第三课(基础c)
  • 网页设计思路
  • 论文阅读笔记——ReconDreamer
  • 【YOLOv11】目标检测任务-实操过程
  • Tof 深度相机原理
  • kubernetes Calico(CNI) NetworkPolicy 流量管理 设置networkpolicy 策略 下集
  • 【Go】Go Prometheus 快速入门
  • C语言笔记数据结构(链表)
  • Jenkins + CICD流程一键自动部署Vue前端项目(保姆级)
  • 输入模块(TM1638函数的使用)
  • 驱动开发系列49 - 搭建 Vulkan 驱动调试环境(编译 mesa 3D)- Ubuntu24.04
  • postman测试文件上传接口详解
  • 鸿蒙原生开发之状态管理V2
  • 白盒测试/接口测试/自动化测试
  • python 如何打包成exe文件
  • 嵌入式系统安全架构白皮书
  • PH热榜 | 2025-03-29
  • 【C语言】一文掌握 C 语言用法(C 备忘清单)
  • 数据湖的数据存储与管理策略:构建高效的数据管理框架
  • Web自动化测试:Unittest单元测试框架
  • 如果从一个系统向另一个系统推送2000条数据,java中使用什么技术合理
  • 【AI速读】CNN图像处理单元的形式化验证方法
  • 简单程序语言理论与编译技术·18 语法制导翻译SDT
  • 【文本张量表示】
  • docker部署mongodb数据库