Java getFloat问题-小数被截断

Java getFloat问题-小数被截断,java,string-formatting,Java,String Formatting,我正在查询一个postgres数据库,其中存储了一些浮动。我在postgres中看到输入成功地用十进制值存储,但当我用Java查询postgres并通过setText将其放入文本框时,小数被修剪 这是我的密码: Statement stmnt = conn.createStatement(); ResultSet rs; rs = stmnt.executeQuery("SELECT * FROM \"tblSamples\" " + " WHERE \"fnName\" = '"

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

这是我的密码:

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”部分还是“set”部分,还是因为字符串格式不正确


为了清楚起见,我确实想修剪尾随的零,但这比从小数开始更重要。

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

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

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

有用的反馈,但结果非常奇怪。我使用了
String.format(“%.16f”,rs.getFloat(“fnXoffset”))
,1.02的输出变成了1.019999809265137。这就是你说的BigDecimal吗?另外,您的回答让我对这一点有了新的认识,我发现
String.format(“%s”,rs.getFloat(“fnXoffset”)
给了我所需的结果。定点和浮点是完全不同的数字。您可以设置字符串
%s
的格式,因为字段类型是decimal而不是float