BigDecimal、精度和小数位数

2023-12-07

我在应用程序中使用 BigDecimal 来表示数字,例如使用 JPA。我对“精度”和“规模”这两个术语做了一些研究,但我不明白它们到底是什么。

谁能解释一下 BigDecimal 值的“精度”和“小数位数”的含义?

@Column(precision = 11, scale = 2)

Thanks!


A BigDecimal is defined by two values: an arbitrary precision integer and a 32-bit integer scale. The value of the BigDecimal is defined to be unscaledValue*10^{-scale}.

精确:

The 精确是未缩放值中的位数。 例如,对于数字 123.45,返回的精度为 5。

So, 精确表示任意精度整数的长度。以下是具有相同小数位数但不同精度的数字的一些示例:

  • 12345 / 100000 = 0.12345 // 小数位数 = 5,精度 = 5
  • 12340 / 100000 = 0.1234 // 小数位数 = 4,精度 = 4
  • 1 / 100000 = 0.00001 // 小数位数 = 5,精度 = 1

在数字等于 0(即 0.000)的特殊情况下,精度始终为 1。

Scale:

如果为零或正数,则scale是小数点右边的位数。如果为负,则该数字的未缩放值乘以 10 的缩放负次方。例如,标度为 -3 表示未标度值乘以 1000。

This means that the integer value of the ‘BigDecimal’ is multiplied by 10^{-scale}.

以下是具有不同比例的相同精度的几个示例:

  • 12345,标度 5 = 0.12345
  • 12345,标度 4 = 1.2345
  • 12345 带刻度 0 = 12345
  • 12345 带刻度 -1 = 123450

BigDecimal.toString:

The toString的方法BigDecimal根据规模和行为不同precision。 (感谢@RudyVelthuis 指出了这一点。)

  • If scale == 0,整数按原样打印出来。
  • If scale < 0, 始终使用 E 表示法(例如 5 刻度 -1 生成“5E+1”)
  • If scale >= 0 and precision - scale -1 >= -6生成一个普通的十进制数(例如 10000000 标度 1 生成“1000000.0”)
  • Otherwise, E-notation is used, e.g. 10 scale 8 produces "1.0E-7" since precision - scale -1 equals unscaledValue*10^{-scale} is less than -6.

更多示例:

  • 19/100 = 0.19 // 整数=19,小数位数=2,精度=2
  • 1/1000 = 0.0001 // 整数 = 1,小数位数 = 4,精度 = 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BigDecimal、精度和小数位数 的相关文章

随机推荐

  • JTextArea 中的行

    有没有可靠的方法来计算 JTextArea 中字符串如何划分为行 我有一个固定宽度的 JTextArea 当它被填充时 会添加一个新行并垂直扩展 现在 我需要确切地知道哪些字符位于哪一行 我可以使用字体规格来添加单个字符宽度 但我不知道这是
  • 如何对表中特定数量的行进行着色?

    如何仅对特定数量的行进行着色 这里我的显示屏只有前 7 行是白色的 其余的是灰色的 我想要 7 条白色线 7 条灰色线 7 条白色线 7 条灰色线等等 你可以尝试这样的事情 table gt span height 20px width 2
  • 将 php 变量添加到 css 语句中!

    我想在我的 css 样式声明中包含以下内容 是否可以
  • 如果表2中不存在,如何插入到表1中?

    我是mysql新手 如果 table2 中不存在记录 则将记录插入到 table1 时出现问题 我有 2 个表 table1 和 table2 其形式为 table1 dep id start stop modified deleted 1
  • 是否可以在Python中创建特定目录的快捷方式?

    我查了一下 inetrnet 但没有发现任何相关内容 所以我在这里问 是否可以使用 python 创建文件的快捷方式并将其放入我选择的特定目录中 例如 我在 C 中有一个名为 EXAMPLE 的文件夹 我想自动创建谷歌浏览器的快捷方式并将其
  • 我可以序列化 ruby​​ Digest::SHA1 实例对象吗?

    大家好 我正在 ruby sinatra 中重新实现现有的自定义文件上传服务 并使用 redis 作为后备存储 客户 计算 SHA1 哈希并启动上传 上传最多 64K 块直至完成 服务器 将块附加到文件 计算完整文件的 SHA1 哈希值以验
  • 在 Ansible 中,如何将活动角色的变量组合到一个数组中?

    看着 在 Ansible 中 如何将不同文件中的变量合并到一个数组中 答案之一建议使用包含变量要将多个来源的变量放入一个数组中 这是almost我需要什么 但不完全是 我正在设置 cloudfront logging 它需要 a 中的项目a
  • Qt 使应用程序始终位于 Weston/Wayland 平台之上

    我想在 Wayland Weston 桌面系统中安排两个应用程序的焦点 两个应用是 用 Qt QML 编写 全屏 使用 Wayland 客户端 API OpenGL 编写 全屏 我想让 App 1 始终位于顶部 App 2 始终位于底部 即
  • 使用 ElementTree 从混合元素 xml 标签中获取文本

    我正在使用 ElementTree 来解析我拥有的 XML 文档 我从以下位置获取文本u标签 其中一些包含混合内容 我需要过滤掉或保留为文本 我有两个例子 u u
  • 删除 id=".xxx" 的 div 或 span

    我无法删除 id 带有句点或星号的 div div div div div 我有 jquery 代码 它删除了 div div 但不是上面的 不是在寻找 jQuery 代码 但它需要正斜杠吗 来自 anurag 的请求 JavaScript
  • 回调到可变的 self

    有没有一种方法 在 Rust 中 可以将可变的借用自我发送到回调而不需要mem replace我在以下 MWE 中使用的 hack 我正在使用 Rust stable 1 11 0 use std mem trait Actable fn
  • 如何在强制推送基础分支后更新我的功能分支。我们只使用rebase,禁止合并

    我们正在使用 git 中的一个非常简单的结构 首先我们有我们的master branch 下面我们有develop 最后我们可以有任何feature branch 我们仅使用 rebase 来更新分支上的历史记录 然后转发到上述分支 每周
  • 集合编辑器未针对 TPersistent 属性中的 TCollection 属性打开

    我有我的自定义集合属性 当它是我的组件的直接成员时 它工作得很好 但我想将集合属性移动到组件内的 TPersistent 属性 现在问题来了 它不起作用 双击对象检查器中的集合属性通常会打开集合编辑器 但现在不再这样了 首先 我应该将什么传
  • 我的华为手机如何设置这个配置?

    我的问题是 在我的华为手机上 我的服务被终止 所以我需要更改手机上的设置 我的问题与this 注意 华为和小米设备具有邪恶的任务杀手服务 会干扰 Telegram 通知服务 为了让我们的通知发挥作用 您需要将 Telegram 添加到这些设
  • JavaScript 正则表达式将 URL 和电子邮件包装在锚点中

    我四处搜寻 但无法找到明确的答案 正则表达式经常出现这种情况 所以我想我会在这里问 我正在尝试组合一个可以在 JavaScript 中使用的正则表达式 以用指向它们的锚标记替换 URL 和电子邮件地址的所有实例 不需要如此严格 显然 这通常
  • 在“if”子句中使用“in”时是元组还是列表?

    哪种方法更好 使用元组 例如 if number in 1 2 或列表 例如 if number in 1 2 建议将哪一种用于此类用途 为什么 逻辑和性能方面 Python 解释器将第二种形式替换为第一种形式 这是因为从常量加载元组是一项
  • 使用 JQuery 从数组填充表

    我有一个包含 16 个元素的数组 我想将其填充到一个表格中 我希望它有 2 行 每行 8 个单元格 其中填充有数组 我的问题是 当填充表时 表将所有元素填充到一行中 我对 JQuery 没有太多经验 我想尝试让它发挥作用 任何帮助表示赞赏
  • IIS7上可以在html中包含php吗?

    在 Apache 中似乎可以这样做 在 HTML 中包含 php 脚本 但是我可以让 IIS 7 解析 html 文件为 php 吗 目前我的 html 文件允许包含 asp 如果我可以用 php 文件来做到这一点 那就太好了 我的服务器按
  • 使用自定义 java 运行时映像时发生 javax.net.ssl.SSLHandshakeException 但并非没有

    我有这个类 它只发送一个 http post 请求 import java net import java io public class JarRuntimeTest public void start throws Exception
  • BigDecimal、精度和小数位数

    我在应用程序中使用 BigDecimal 来表示数字 例如使用 JPA 我对 精度 和 规模 这两个术语做了一些研究 但我不明白它们到底是什么 谁能解释一下 BigDecimal 值的 精度 和 小数位数 的含义 Column precis