精确计算-BigDecimal类

2023-11-07

基本方法

  • 加法:add()函数
  • 减法:subtract()函数
  • 乘法:multiply()函数
  • 除法:divide()函数
  • 绝对值:abs()函数

重点介绍除法

在这里插入图片描述

使用除法函数在divide的时候要设置各种参数,要有除数、精确的小数位数和舍入模式

舍入模式:

ROUND_UP
舍入远离零的舍入模式。在丢弃非零部分之前始终增加数字(始终对非零舍弃部分前面的数字加1)。注意,此舍入模式始终不会减少计算值的大小。

ROUND_DOWN
接近零的舍入模式。在丢弃某部分之前始终不增加数字(从不对舍弃部分前面的数字加1,即截短)。注意,此舍入模式始终不会增加计算值的大小。

ROUND_CEILING
接近正无穷大的舍入模式。如果 BigDecimal 为正,则舍入行为与 ROUND_UP 相同;如果为负,则舍入行为与 ROUND_DOWN 相同。注意,此舍入模式始终不会减少计算值。

ROUND_FLOOR
接近负无穷大的舍入模式。如果 BigDecimal 为正,则舍入行为与 ROUND_DOWN 相同;如果为负,则舍入行为与 ROUND_UP 相同。注意,此舍入模式始终不会增加计算值。

ROUND_HALF_UP
向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式。如果舍弃部分 >= 0.5,则舍入行为与 ROUND_UP 相同;否则舍入行为与 ROUND_DOWN 相同。注意,这是我们大多数人在小学时就学过的舍入模式(四舍五入)。

ROUND_HALF_DOWN
向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为上舍入的舍入模式。如果舍弃部分 > 0.5,则舍入行为与 ROUND_UP 相同;否则舍入行为与 ROUND_DOWN 相同(五舍六入)。

ROUND_HALF_EVEN
向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。如果舍弃部分左边的数字为奇数,则舍入行为与 ROUND_HALF_UP 相同;如果为偶数,则舍入行为与 ROUND_HALF_DOWN 相同。注意,在重复进行一系列计算时,此舍入模式可以将累加错误减到最小。此舍入模式也称为“银行家舍入法”,主要在美国使用。四舍六入,五分两种情况。如果前一位为奇数,则入位,否则舍去。

以下例子为保留小数点1位,那么这种舍入方式下的结果。

1.15>1.2
1.25>1.2

ROUND_UNNECESSARY
断言请求的操作具有精确的结果,因此不需要舍入。如果对获得精确结果的操作指定此舍入模式,则抛出ArithmeticException。

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

精确计算-BigDecimal类 的相关文章

  • Visual Studio 2010下ASPX页面的TreeView控件循环遍历

    如果维护一个老系统就总会遇到各种问题 而这次是TreeView的循环遍历 对于Visual Studio2010上aspx页面的TreeView控件 我感受到了什么叫集微软之大智慧 与二叉树型不一样 我解释一下 他提供TreeNode和集合
  • 辨析BigDecimal的toString()方法和toPlainString()方法

    辨析BigDecimal的toString 方法和toPlainString 方法 toString toString方法会将BigDecimal的值以科学计数方式的字符串 但是转换成科学计数的方式也是有场景的 并不是所有的值都会转为科学计
  • 将数字 (22,21) 映射到 BigDecimal 时,Hibernate 导致结果精度损失

    我在 Oracle 11g 中将此列映射为 NUMBER 21 20 在 Hibernate 中映射为 Column name PESO precision 21 scale 20 nullable false public BigDeci
  • 在 GWT 中将字符串转换为 BigDecimal

    在我的 GWT Web 应用程序中 我有一个包含价格的文本框 如何将该 String 转换为 BigDecimal 最简单的方法是创建继承 ValueBox 的新文本框小部件 如果您这样做 则无需手动转换任何字符串值 ValueBox 负责
  • 如何在 BigDecimal 上使用 >、=、< 等比较运算符

    我有一个域类unitPrice set as BigDecimal数据类型 现在我正在尝试创建一种方法来比较价格 但似乎我不能在其中使用比较运算符BigDecimal数据类型 我必须更改数据类型还是有其他方法 简而言之 firstBigDe
  • BigDecimal stripTrailingZeros 不适用于零

    我的代码中遇到了奇怪的错误 它与 new BigDecimal 1 2300 stripTrailingZeros returns 1 23 正确的 但 new BigDecimal 0 0000 stripTrailingZeros re
  • BigDecimal/双精度 - 数字向上舍入更高

    下面的第二个方法调用 setYCooperative 得到错误的值 89 99999435599995 而不是 89 99999435599994 第一次调用 setXCooperative 获得正确的值 29 99993874900002
  • 将 100 与 BigDecimal 相乘时哪种方法更好?

    这里我在使用Java BigDecimal时遇到一个问题 当我想为 BigDecimal 对象乘以 100 时 哪种方法会更好 10 乘以 2 次 向右移动点 2 按十次幂缩放 2 还有其他办法吗 如果有请告诉我 顺便说一句 它将用于商业计
  • BigDecimal movePointRight 和 scaleByPowerOfTen 之间有什么区别?

    使用以下代码 BigDecimal x new BigDecimal 34 5678 BigDecimal a x movePointRight 3 BigDecimal b x scaleByPowerOfTen 3 BigDecimal
  • 如何获得唯一确定给定双精度的“最短”BigDecimal

    基本上 我很好奇如何掌握new BigDecimal Double toString d 无需经历创建字符串的过程 The 的文档Double toString http download oracle com javase 6 docs
  • 删除前导 0 直至小数点

    我想删除小数中的前导零 所以我想要的输出应该是 324 not 0 324 我试过str replaceFirst 0 没用 我也尝试了正则表达式 没有结果 是的 我正在使用 BigDecimal Try this str str repl
  • BigDecimal - 检查值是否在双倍范围内

    我有一个Java应用程序 它从某处解析数字 并检查它是否是有效的int 在Integer MIN VALUE和Integer MAX VALUE之间 或有效的double 在Double MIN VALUE和Double MAX VALUE
  • 如何使用 BigDecimal 显示始终保留 2 位小数的数字?

    我在用大十进制以获得一些价格值 需求是这样的 无论我们从数据库中获取什么值 显示的值都应该有2个小数点 Eg 获取的值为 1 应显示为 1 00获取的值为 1 7823 应显示为 1 78 我在用setScale 2 BigDecimal
  • Java BigDecimal精度问题

    我知道以下行为是一个老问题 但我仍然不明白 System out println 0 1 0 1 0 1 或者即使我使用BigDecimal System out println new BigDecimal 0 1 doubleValue
  • 如何处理 Java BigDecimal 中的舍入错误

    我正在与开源项目 axil 合作 该项目在java应用程序内部实现了脚本引擎 并且在尝试利用BigDecimal的舍入时遇到了一个主要的障碍 BigDecimal 似乎正在将我的输入转换为科学记数法 然后将我传递的精度应用于数字的 SN 表
  • 如何在Python中定义保存1000位数字的小数类?

    我需要一个包含 1000 位十进制数字的类来计算一系列数据 例如 pi 数 花时间并不重要 我该如何定义 add 执行此操作的函数 例如我需要一个可以保存这个数字的值 3 1415926535897932384626433832795028
  • 对于大输入,十进制扩展程序运行速度非常慢

    我正在编写一个程序来计算数字的小数扩展103993 33102我想根据用户输入的数字打印出所有尾随小数 它可以快速运行所有数量最多10 5但如果输入10 6编程大约需要 5 分钟才能打印出答案 我怎样才能加快速度 我尝试了两种不同的方法 一
  • 创建自定义 BigDecimal 类型

    在我的应用程序中 所有 BigDecimal 数字都被缩放为具有两位小数 换句话说 每次我在代码中创建一个新的 BigDecimal 时 我也需要使用方法scale BigDecimal x BigDecimal ZERO x setSca
  • BigDecimal 的 java 数学库允许空值

    是否有一个 BigDecimal 库具有 BigDecimal 的基本操作 并且允许空值 出于数学目的 Null 应被视为 0 我不想对可能的空值进行所有空检查 您要么永远不允许数据库 应用程序中存在空值 要么使用以下命令查看和初始化所有内
  • scala.math.BigDecimal :1.2 和 1.20 相等

    将 Double 或 String 转换为 scala math BigDecimal 时如何保持精度和尾随零 用例 在 JSON 消息中 属性的类型为 String 值为 1 20 但是在 Scala 中读取这个属性并将其转换为 BigD

随机推荐

  • 如何修改Tomcat端口号

    1 首先需要了解Tomcat默认的端口号是 8080 2 点击进入 Tomcat 目录下的 conf 目录 找到 server xml 配置文件并打开 3 找到Connector标签 修改port属性为你想要的端口号 端口号范围 1 655
  • 第零课 python与pycharm的安装

    首先安装anaconda 安装好Anaconda之后创建一个python环境 然后安装pycharm 在Pycharm中选择好Anaconda中创建的环境 这样就完成了程序环境的安装与配置
  • 在 Visual Studio 中使用 Qt 开发桌面应用的环境配置

    本文阐述在Visual Studio 2019中建立Qt项目的方法 Visual Studio 的安装 官网下载地址 Visual Studio 面向软件开发人员和 Teams 的 IDE 和代码编辑器 下载Community版本即可 安装
  • 应用内版本更新库UpdateVersion

    应用内版本更新库UpdateVersion UpdateVersion是一个Android版本更新库 GitHub仓库地址 引入 gradle allprojects repositories maven url https jitpack
  • ddl是什么意思网络语_ddl是什么

    数据库模式定义语言并非程序设计语言 DDL数据库模式定义语言是SQL语言 结构化查询语言 的组成部分 SQL语言包括四种主要程序设计语言类别的语句 数据定义语言 DDL 数据操作语言 DML 数据控制语言 DCL 和事务控制语言 TCL 那
  • 【排序】八大排序算法简介及它们各自的特点总结

    概述 一般使用的八大排序算法是 插入排序 选择排序 冒泡排序 希尔排序 归并排序 快速排序 堆排序 基数排序 每个方法有其适合的使用场景 可以根据具体数据进行选择 几个概念 内部排序 排序期间元素全部存放在内存中的排序 外部排序 排序期间元
  • SpringBoot-Shiro安全权限框架

    Apache Shiro是一个强大而灵活的开源安全框架 它干净利落地处理身份认证 授权 企业会话管理和加密 官网 http shiro apache org 源码 https github com apache shiro Subject
  • 链游公会打金热背后:多由矿工转型,存在多重风险

    今年8月 当Yield Guild Games 紧随头部链游 Axie Infinity 迎来市场热度时 大多数人都没有料到 链游公会 会成为一个专门的赛道 甚至可以说 爆火的赛道 在最近一月链捕手的每周融资统计中 链游公会获得融资的频率仅
  • 【华为OD统一考试B卷

    在线OJ 已购买本专栏用户 请私信博主开通账号 在线刷题 运行出现 Runtime Error 0Aborted 请忽略 华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一
  • php-SER-libs-main反序列化靶场通关详细思路

    目录 说明 第一关 基础序列化 第二关 construct与 destruct 第三关 cookie传参 第四关 create fucntion 第五关 wakeup 第六关 私有属性 第七关 call 第八关 增量逃逸 第九关 pop链构
  • Hexo更换主题

    使用Hexo更换主题还算方便 先使用克隆命令安装好主题 然后更改一下博客的配置文件D hexo config yml里面的主题名称就好了 1 安装主题 在博客目录D hexo下右键点击Git Bash 输入以下命令 其他的主题也类似操作 g
  • WIN10下怎么找到MYSQL5.7数据库中存储数据的位置以及重装mysql数据复盘

    由于我换了个m 2的固态硬盘 我重装系统 但是重装系统之后 我mysql之前的版本是5 5的 然后不能启动 我想这重装吧 我想在重装肯定装5 7的了 我就从官网下载了5 7版本 安装完毕 但是我想把我的之前的数据库以及表数据都复盘到mysq
  • 用了TCP协议,就一定不会丢包嘛?

    表面上我是个技术博主 但没想到今天成了个情感博主 我是没想到有一天 我会通过技术知识 来挽救粉丝即将破碎的感情 掏心窝子的说 这件事情多少是沾点功德无量了 事情是这样的 最近就有个读者加了我的绿皮聊天软件 女生 头像挺好看的 就在我以为她要
  • 使用安信可IDE开发ESP8266时出现error: ld returned 1 exit status

    在 app Makefile中COMPONENTS eagle app v6 后面添加driver libdriver a 并在 app driver中添加Makefile文件 这里建议直接复制 examples IoT Demo文件夹并删
  • css苹果手机字号变大,css – 智能手机字体大小不一致

    我正在调整一个网页 使其在智能手机上看起来不错 我已经在CSS文件中声明了一个 media部分 所以我可以指定这个页面的字体大小 这是媒体部分 media screen and max device width 640px TermsOfU
  • 【计算机网络系列】网络层②:详解网际协议IP中的IP地址

    网际协议IP 网际协议IP Internet Protocol 是TCP IP体系中两个最主要的协议之一 也是最重要的互联网标准协议之一 与协议IP配套使用的还有三个协议 地址解析协议ARP Address Resolution Proto
  • win10下 + cuda10.2 + 双目相机zed 2i sdk的安装

    zed 2i 环境搭建 1 安装cuda和cudnn 2 安装zed sdk 3 安装API 本实验用的是pycharm平台 python3 7 主要讲解zed 2i sdk的安装以及遇到的问题 1 安装cuda和cudnn 我们实验之前已
  • qt中在QMultiMap中删除自定义数据类的元素

    引言 当我们使用QMultiMap的remove函数来删除容器中的某一个元素时 若是容器中存放的是基本数据类型 则程序编译的时候没有任何问题 但是当容器中存放的是自定义的数据 这时若是C 基础比较扎实的 应该不会出现编译报错的问题 但是C
  • 桥接模式下虚拟机连不上网络的解决方法

    新建的虚拟机 开启虚拟机后 无法ping到网络 ping www baidu com 显示如下 无法连接到网络 或者输入命令 ifconfig ens33网卡显示像下面这样 没有自动分配ip地址 也可能是ens0网卡 正常连上网络 会自动为
  • 精确计算-BigDecimal类

    基本方法 加法 add 函数 减法 subtract 函数 乘法 multiply 函数 除法 divide 函数 绝对值 abs 函数 重点介绍除法 使用除法函数在divide的时候要设置各种参数 要有除数 精确的小数位数和舍入模式 舍入