java - BigDecimal/numeric的Java和postgres值的区别
问题描述
我在 Java 项目中使用 BigDecimal 类型。我正在尝试使用带有数字字段的函数来保存它。Java 和 postgres 有不同的价值。例如,Java 中的 56.97 值在 postgres 中保存为 56.9699999999999989。我该如何预防?
解决方案
如果你去 postgresql 文档: https ://www.postgresql.org/docs/current/datatype-numeric.html
我猜您使用的是实数或双精度,它们被描述为“可变精度,不精确”。
如果你想让它准确,假设我们在谈论金钱或类似的东西,那么你应该使用numeric
ordecimal
类型:
NUMERIC(precision, scale)
精度是总位数,而小数位数是小数部分的位数。
例如,数字 1234.567 的精度为 7,小数位数为 3。
推荐阅读
- algorithm - 嵌套循环的时间复杂度?
- python - 字典中python 3中可迭代对象的含义是什么?
- json - 如何从 Ionic 4 模板中的 JSON 字符串中获取变量?
- android - 按下状态在按钮中不起作用
- netsuite - 案例入站电子邮件捕获格式
- sql - Oracle中动态查询的索引
- sql - 基于 SQL Server 中列的交叉引用比较两个表
- spring-mvc - 带有 Spring MVC 的 Spring Webflux - 使用 doOnEach 时发出空值
- spring-webflux - Spring WebFlux Web Client - 迭代分页 REST API
- visual-studio-2017 - 构建 Origami 时出现 CS0012 错误(Hololens 101 教程)