Hibernate 的浮点映射精度

2024-03-19

我试图在 MySQL 数据库中存储浮点数,但 Hibernate 获得的值与列中存储的值不同,

在我的应用程序中我计算:

float subtotal = 160.5f;
float ammount = (float) (subtotal * 0.1f); // this way I get the 10%
receipt.setAmmount(ammount);
receipt.save();

如果我记录该金额,我会得到如下信息:

19/04/2013 10:17:20 [INFO] ServiceImpl: Added ammount x $16.05

我的专栏ammount在 mysql 数据库中是FLOAT UNSIGNED当我进行选择时,我获得 16.05 作为值,但后来,当我使用 Hibernate 获取该对象时,ammount 字段是 16.049999237060547。

我的 hbm 专栏如下所示:

<property name="ammount" type="float"></property>

我正在读书here https://stackoverflow.com/questions/399401/hibernate-and-currency-precision and here https://blogs.oracle.com/CoreJavaTechTips/entry/the_need_for_bigdecimal推荐使用BigDecimal在Java中而不是Float or Double为了钱,但我不知道我应该在数据库中使用什么数据类型或如何配置 Hibernate 以使用该数据类型,谢谢!


推荐的 DECIMAL 和 NUMERIC 类型的 Java 映射是 java.math.BigDecimal。 java.math.BigDecimal 类型提供数学 允许 BigDecimal 类型相加、相减的操作, 与其他 BigDecimal 类型相乘和相除,与整数 类型,以及浮点类型。

建议检索 DECIMAL 和 NUMERIC 值的方法是 ResultSet.getBigDecimal。 JDBC 还允许访问这些 SQL 类型: 简单的字符串或字符数组。因此,Java 程序员可以使用 getString 接收 DECIMAL 或 NUMERIC 结果。然而,这使得 使用 DECIMAL 或 NUMERIC 作为货币值的常见情况

SEE HERE https://stackoverflow.com/questions/7550337/what-type-would-you-map-bigdecimal-in-java-hibernate-in-mysql

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

Hibernate 的浮点映射精度 的相关文章

随机推荐

  • XmlReaderSettings CheckCharacters=false 似乎不起作用

    我正在尝试反序列化来自 Rest 服务的 xml 响应 我正在实现 IXmlSerialized 因为 xml 相当具体 并且我进行自定义序列化 响应包含非法 xml 字符 但由于我无法修改 xml 所以我必须处理它们 解决方案似乎很简单
  • 将一组布尔值转换为数字

    这是我将用来获取一组三个布尔值并将其转换为 switch 语句的 int 的代码 int bits 0 bool a true b false c true 101 5 bits bits a lt lt 2 bits bits b lt
  • python 在测试文件中的模块导入期间模拟函数调用

    我正在尝试模拟导入模块时执行的函数调用 下面是我遇到的问题的示例 app module py from util import get param PARAM get param param name class sample def ru
  • ImportError:导入 sampy.TurtleWorld 时没有名为 Tkinter 的模块

    我正在使用 Python 3 4 并按照本书进行操作 思考 Python 如何像计算机科学家一样思考 http www greenteapress com thinkpython thinkCSpy pdf 我实际上在一周前就发现了这个问题
  • 以编程方式设置网格排序

    是否可以在读取数据之前以编程方式设置 KendoUI 数据源的排序参数并避免第二个服务器读取 范围是对特定用户交互设置默认排序 如何 这是我想要做的一个例子 因为答案没有切中要害 或者也许我不明白事情是如何运作的 我定义了一个具有初始排序的
  • 根据单元格中的第一个字符隐藏 Google 电子表格中的行

    我正在努力向 Google 电子表格添加功能 电子表格从网络导入数据 并且我将其全部格式化 我的一个专栏是一系列字符串 以两种方式之一进行格式化 String 或 String 不带空格 基本上是从网络导入斜体 我正在尝试编写一个在打开电子
  • C# - 如何将单个 Excel 工作表从一个工作簿复制到另一个工作簿?

    我需要将工作表从一个工作簿复制到另一个工作簿中 但我有点卡住了 前提是我有一个 主 工作簿 其中存储了许多报告的模板 然后我需要创建特定工作表的空白副本并将其添加到新工作簿中 这是我到目前为止所拥有的 private void Create
  • 无法在 Swift 中使用缓存生成视频缩略图

    一直在努力让它发挥作用 我正在生成视频缩略图 但它在集合视图中加载非常重 我想缓存它们 但找不到解决方案 这是我正在使用的代码 func previewImageFromVideo url NSURL gt UIImage let asse
  • 将现有项目转换为可定制的框架

    我是一名 Android 开发人员 我需要创建 IOS 应用程序 所以我这样做了 应用程序现在已经准备好了 但现在我想把它变成一个库 框架 我的意思是每个客户的不同项目将使用相同的代码库 他们将能够更改应用程序的文本字符串和颜色 其余的业务
  • 使用 FakeItEasy 模拟方法内的方法

    如何模拟 伪造在另一个函数中调用的函数的结果 通常 Test2 是一个我不喜欢获取真实数据的 DataAccess 方法 我喜欢我的单元测试测试的是业务逻辑 这就是我现在所拥有的 但它根本不起作用 Sum 始终被断言为 5 public i
  • 在具有序列化问题的 Dataframe 上调用 UDF

    我在 UDF 博客上查看了一些似乎有效的示例 但实际上当我运行它们时 它们给出了臭名昭著的任务不可序列化错误 我觉得奇怪的是 这篇文章已经发表了 却没有提到这一点 运行 Spark 2 4 代码 非常简单 Spark 中一定有什么变化 de
  • 查询 MediaStore:连接缩略图和图像(在 ID 上)

    我正在为 Android 开发一个 照片库 类型的应用程序 它最初是作为 Udacity 开发 Android 应用程序的最终项目 因此它的整体结构 活动 内容提供者等 应该非常健全 并且已被 Udacity Google 接受认证 然而
  • Android中如何混淆字符串?

    我想混淆我的 api url 我可以使用 Proguard 吗 如果是 我该怎么做 以及如何在 Proguard 配置文件中添加类来混淆类中存在的方法和变量 您现在可以使用新的 gradle 插件 库来有效地混淆类中的字符串 请在此处查看
  • 如何使用 Spark 处理一系列 hbase 行?

    我正在尝试使用 HBase 作为 Spark 的数据源 因此 第一步是从 HBase 表创建 RDD 由于 Spark 使用 hadoop 输入格式 我可以找到一种通过创建 rdd 来使用所有行的方法http www vidyasource
  • 将 HTML 转换为图像

    Duplicate 创建网页缩略图的最佳方法是什么 https stackoverflow com questions 65078 what is the best way to create a web page thumbnail 我想
  • 如何检查所选文本是否为粗体(contenteditable)

    我正在使用内置的 html 实现自定义文本编辑器contenteditable特征 我需要知道用户何时在文本编辑器上选择文本 无论它是否为粗体 这是我现在所拥有的 HTML
  • 私有区块链与 Hashgraph、Ripple、BigChainDb

    我一直在研究不同区块链的一些用例 最后我得出的结论是 建立一个私有区块链相当于拥有一个分布式数据库 在其之上添加了区块链概念 如不可篡改 数字签名等 例如 Bigchaindb 好吧 如果我们确实需要智能合约功能 那么分布式数据库可能无法工
  • Android:无论如何想知道是否选中了“未知来源”吗?

    有什么方法可以查明用户是否选中了 应用程序设置 菜单中的 未知来源 复选框 您可以使用INSTALL NON MARKET APPS http developer android com reference android provider
  • MVC3 AntiForgeryToken 在 Ajax 登录时中断

    ASP NET MVC 的防伪令牌机制是基于当前HttpContext User 当您调用时 它使用该值来构造令牌Html AntiForgeryToken 基本上是可以的 见解释最后一段在这里 https stackoverflow co
  • Hibernate 的浮点映射精度

    我试图在 MySQL 数据库中存储浮点数 但 Hibernate 获得的值与列中存储的值不同 在我的应用程序中我计算 float subtotal 160 5f float ammount float subtotal 0 1f this