您好我有一个excel文件读取应用程序,它读取文件中的每个单元格。
只要单元格包含数值,应用程序就会将其视为数字单元格。
例如,单元格包含(40002547),应用程序会将其视为数字单元格。我通过使用此代码获取值:
SONum = String.valueOf(cellSONum.getNumericCellValue());
那很好用。我的问题是它在字符串的末尾附加小数。它将是(40002547.0)。我需要它按原样。提前致谢
答案 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;
}
}