gpt4 book ai didi

java - jdbc如何截断数值?

转载 作者:搜寻专家 更新时间:2023-11-01 03:56:42 25 4
gpt4 key购买 nike

如果我有一个 scale2 的 SQL 列。 JDBC 如何处理分隔符后超过 3 位的截断值?

示例:

插入值 2.989Sybase 中变为 2.98 或在 Oracle 中变为 2.99 取决于在 SQL 提供程序上。

JDBC 是如何处理的?

最佳答案

就像@LuiggiMendoza 所说的,这取决于驱动程序,这个问题的常见解决方案,我认为更好的方法是对货币值等字段使用 BigDecimal,这样您就可以处理舍入模式并将数字保存在你想要的确切值,保持你的代码跨数据库供应商,是的,它有点慢,但保证你在 java 中工作的值在你保存时是相同的,我的意思是,我' ts 使用 JPA 处理十进制值的自然方式如果您想要示例:

ROUND_CEILING: Ceiling function

0.333 -> 0.34
-0.333 -> -0.33
ROUND_DOWN: Round towards zero

0.333 -> 0.33
-0.333 -> -0.33
ROUND_FLOOR: Floor function

0.333 -> 0.33
-0.333 -> -0.34
ROUND_HALF_UP: Round up if decimal >= .5

0.5 -> 1.0
0.4 -> 0.0
ROUND_HALF_DOWN: Round up if decimal > .5

0.5 -> 0.0
0.6 -> 1.0

BigDecimal 示例:

a = new BigDecimal("2.5"); // digit left of 5 is even, so round down
b = new BigDecimal("1.5"); // digit left of 5 is odd, so round up
a.setScale(0, BigDecimal.ROUND_HALF_EVEN).toString() // => 2
b.setScale(0, BigDecimal.ROUND_HALF_EVEN).toString() // => 2

来源:BigDecimal tutorial

关于java - jdbc如何截断数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25510982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com