jdbc如何截断数值?

时间:2014-08-26 16:42:45

标签: java jdbc

如果我的SQL列的比例2JDBC如何处理在分隔符后截断超过3位的值?

示例:

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

JDBC如何处理?

1 个答案:

答案 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

来源:BigDecimal tutorial