需要帮助将字符串转换为类型编号(20,3)

时间:2011-05-13 18:17:35

标签: java string double

我在表中设置一个字段名称varaince,在oracle中键入Number(20,3)..... 我从网页上获取数字作为字符串并将其转换为Double,因此我可以将其写回表格,如下所示

if ( (this.getVariance() != null) && (this.getVariance().length() > 0) )
                cstmt.setDouble(7,Util.stringToDouble(this.getVariance()));
            else
                cstmt.setNull(7,OracleTypes.NUMBER);

但我收到此错误

compile:
     [exec] com\sample\common\javabean\ExampleBean.java:261: cannot resolve symbol
     [exec] symbol  : method setDouble (int,java.lang.Double)
     [exec] location: interface java.sql.CallableStatement
     [exec]                             cstmt.setDouble(7,Util.stringToDouble(this.getVariance()));
     [exec]           

                       ^

当我做整数时,它并没有给我错误,但它没有写入表。

如何以表格从表单中写入该数字的方式转换字符串可以做些什么。任何帮助都会很好

2 个答案:

答案 0 :(得分:1)

Util.stringToDouble(this.getVariance())更改为Util.stringToDouble(this.getVariance()).doubleValue()

<强>细节...

stringToDouble似乎正在返回java.lang.Double个对象。这意味着它返回对实际携带double的对象的引用。这对于需要Object的任何内容都很有用,因为DoubleObject

doubleValue返回double(小写)。使用此格式,返回实际的8字节数。这样更有效,因为它不需要对象分配,但在需要Object时不起作用。但是,在这种情况下,由于您使用stringToDouble,性能影响已经造成了损害。您可以考虑使用Double.parseDouble(...)代替Util.stringToDouble(...).doubleValue()

答案 1 :(得分:0)

你真的需要把它转换为双倍?你可以这样做:

cstmt.setBigDecimal(7, new java.math.BigDecimal(this.getVariance()));