如果我的SQL列的比例为2
。 JDBC
如何处理在分隔符后截断超过3位的值?
示例:
插入值2.989
在 Sybase 中变为2.98
,在 Oracle 中变为2.99
,具体取决于SQL提供程序。
JDBC
如何处理?
答案 0 :(得分:-1)
就像@LuiggiMendoza所说它依赖于驱动程序,这个问题的常见解决方案,我认为更好的是将BigDecimal用于货币值等字段,这样你就可以处理舍入模式并保存您想要的确切值的数字,保持您的代码跨数据库供应商,是的,它有点慢,但给你保证,当你保存它时,你在java中工作的价值将是相同的,我的意思是,我用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