Java getFloat麻烦 - 小数被截断

时间:2015-08-30 22:04:53

标签: java string-formatting

我正在查询postgres数据库,我正在存储一些花车。我在postgres中看到输入成功存储了十进制值,但是当我用Java查询postgres并通过setText将它们放入文本框时,小数正在被修剪。

enter image description here

这是我的代码:

Statement stmnt = conn.createStatement();

ResultSet rs;

rs = stmnt.executeQuery("SELECT * FROM \"tblSamples\" "
    + " WHERE \"fnName\" = '" + cmbFnName.getSelectedItem().toString() + "' LIMIT 1;");

while ( rs.next() ) {
        txtID.setText(rs.getString("ID"));
        //attempt 1: 
        txtXoffset.setText(String.format("%f", rs.getFloat("fnXoffset")));
        //attempt 2: 
        txtXoffset.setText(String.format("%0.000000000f", rs.getFloat("fnXoffset")));
        //attempt 3: 
        txtXoffset.setText(String.format("%d",(long)rs.getDouble("fnXoffset")));
                }

这些都不起作用。我无法判断它是否因为" get"部分,"设置"部分,或者因为字符串格式没有正确发生。

要明确的是,我确实想要修剪尾随零,但这比开始使用小数点要重要。

1 个答案:

答案 0 :(得分:2)

正确的格式字符串是.,后跟所需数字后跟f

System.out.println(String.format("%.12f", 1.0));

为了完整起见,请注意,对于用户输入的值,数据库通常存储Java中的固定点编号,称为BigDecimal而不是浮点数。