Java getFloat 问题 - 小数被截断
Java getFloat troubles - decimals being truncated
我正在查询存储一些浮点数的 postgres 数据库。我在 postgres 中看到输入已成功存储为十进制值,但是当我使用 Java 查询 postgres 并通过 setText 将它们放入文本框时,小数点为 trimmed.
这是我的代码:
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")));
}
None 这些东西正在工作。我不知道这是因为 "get" 部分、"set" 部分,还是因为字符串格式设置不正确。
明确地说,我确实想要 trim 尾随零,但这不如让小数开头重要。
正确的格式字符串是 .
后跟所需的位数,然后是 f
:
System.out.println(String.format("%.12f", 1.0));
为了完整起见,请注意对于用户输入的值,数据库通常存储定点数,在 Java 中称为 BigDecimal 而不是浮点数。
我正在查询存储一些浮点数的 postgres 数据库。我在 postgres 中看到输入已成功存储为十进制值,但是当我使用 Java 查询 postgres 并通过 setText 将它们放入文本框时,小数点为 trimmed.
这是我的代码:
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")));
}
None 这些东西正在工作。我不知道这是因为 "get" 部分、"set" 部分,还是因为字符串格式设置不正确。
明确地说,我确实想要 trim 尾随零,但这不如让小数开头重要。
正确的格式字符串是 .
后跟所需的位数,然后是 f
:
System.out.println(String.format("%.12f", 1.0));
为了完整起见,请注意对于用户输入的值,数据库通常存储定点数,在 Java 中称为 BigDecimal 而不是浮点数。