Java getFloat 问题 - 小数被截断

标签 java string-formatting

我正在查询一个 postgres 数据库,其中存储了一些 float 。我在 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”部分、“set”部分还是因为字符串格式设置不正确。

需要明确的是,我确实想修剪尾随零,但这并不比首先输入小数重要。

最佳答案

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

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

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

关于Java getFloat 问题 - 小数被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32301608/

相关文章:

java - 定宽 float 格式

java - 这里可以使用Java String格式吗

Java程序挂起

java - Android:如何创建ksoap2请求?

java - libgdx 简单的游戏很卡顿

未终止字符串的 JavaScript 错误

c# - 用于特定用例的 String.Format

java - 第一个 JBoss 示例崩溃(jbpm 6.0、AS7、Windows 7)

java - Tomcat抛出错误 "java.lang.ClassNotFoundException: org.apache.naming.java.javaURLContextFactory"

ios - 在 Swift 中格式化电话号码