删除java中的数值后的小数

时间:2013-09-18 06:43:03

标签: java excel decimal

您好我有一个excel文件读取应用程序,它读取文件中的每个单元格。

只要单元格包含数值,应用程序就会将其视为数字单元格。

例如,单元格包含(40002547),应用程序会将其视为数字单元格。我通过使用此代码获取值:

SONum = String.valueOf(cellSONum.getNumericCellValue());

那很好用。我的问题是它在字符串的末尾附加小数。它将是(40002547.0)。我需要它按原样。提前致谢

8 个答案:

答案 0 :(得分:10)

这是因为cellSONum.getNumericCellValue()正在返回一个浮点类型。如果在调用valueOf()之前将其强制为整数,则应该以整数形式获取字符串表示,如果确实这是所有可能性所需的:

SONum = String.valueOf((int)cellSONum.getNumericCellValue());

您可以在以下代码中看到:

class Test {
    public static void main(String[]args) {
        double d = 1234;
        System.out.println(String.valueOf(d));
        System.out.println(String.valueOf((int)d));
    }
}

输出:

1234.0
1234

但是,如果你想在任何字符串的末尾删除.0但允许非整数值存活,你可以自己删除尾随文本:

class Test {
    public static void main(String[]args) {
        double d1 = 1234;
        double d2 = 1234.567;
        System.out.println(String.valueOf(d1).replaceFirst("\\.0+$", ""));
        System.out.println(String.valueOf(d2).replaceFirst("\\.0+$", ""));
    }
}

该片段输出:

1234
1234.567

答案 1 :(得分:2)

如果你想确定你没有削减任何有效小数,你也可以使用正则表达式:

String pattern = "\.0+"; // dot followed by any number of zeros
System.out.println(String.valueOf(cellSONum.getNumericCellValue()).replaceAll(pattern, "")); 

有关java regexp的更多信息,例如:http://www.vogella.com/articles/JavaRegularExpressions/article.html

答案 2 :(得分:2)

正如PaxDiablo所提到的,cellSONum.getNumericCellValue()返回一个浮点。

您可以将其强制转换为Long或int以摆脱'。'

后面的所有内容
String SONum = String.valueOf(cellSONum.getNumericCellValue().longValue());

用作例子:

String SONum = String.valueOf((new Double(0.5)).longValue());

答案 3 :(得分:1)

尝试使用split()

         SONum = String.valueOf(cellSONum.getNumericCellValue());
         SONum  = SONum.split("\\.")[0];

当您使用40002547.0拆分.时,拆分功能会返回两部分,并且您需要第一部分。

答案 4 :(得分:0)

SONum = ""+cellSONum.getNumericCellValue().split(".")[0];

答案 5 :(得分:0)

尝试

double value = 23.0;
DecimalFormat df = new DecimalFormat("0.##");
System.out.println("bd value::"+ df.format(value))

答案 6 :(得分:0)

考虑使用BigDecimal。 你可以简单地说

BigDecimal scaledDecimal = new BigDecimal(value).setScale(0, RoundingMode.HALF_EVEN);

答案 7 :(得分:0)

如果您的输入是String并且您还需要String

中的结果,这将有所帮助

1)。使用Double.parseDouble将字符串转换为Double,

2)。键入cast为int,然后使用String.valueOf()

转换为字符串
private String formatText(String text) {
    try {
        return String.valueOf((int) Double.parseDouble(text));
    } catch (NumberFormatException e) {
        return text;
    }
}