0
String x = "39.33";
String result ;
Double x1 = new Double(x);
System.err.println("value :"+ x1);
String[] parts = x1.toString().split("\\.");

if(parts != null )
{
 if((Integer.parseInt(parts[1])) > 0)
{
       result =x1;

}
 else
{
result= parts[0];
}
 }

请让我知道格式化/拆分值的最佳方法:我的需要是....

 if x is 39
 so x1 is 39.0
 so i need result =39

 if x is 39.33
 so x1 is 39.33
 so i need result =39.33

我不想使用拆分或条件检查if((Integer.parseInt(parts[1])) > 0)..请让我知道最好的方法?

4

5 回答 5

1

如果将双精度转换为 int,则忽略小数位。

对于这个问题,它会是这样的:

String result;
String x = "39.33";
Double x1 = new Double(x);
int xPre = x1.intValue();

if ( x1 > xPre) {
    result = x1;
} else {
    result = Integer.toString(xPre);
}
于 2013-02-04T11:39:14.833 回答
1

试试这个:

Double d = Double.parseDouble("35.0");
String result = NumberFormat.getNumberInstance().format(d.doubleValue())
System.out.println(result);
于 2013-02-04T11:54:16.970 回答
0

您需要做的就是将数字读取为 double 并将其转换为 int,这将有效地截断数字。

于 2013-02-04T11:37:00.103 回答
0

你可以做

String x = "39.33";
long l = (long) Double.parseDouble(x); // == 39

这将导致l成为双精度数的整数部分。(前提是数量少于 90 亿)

如果您真的想使用 split 您可以执行以下操作,这会稍微慢一些,但如果数字太大会抛出异常。

long l = Long.parseLong(x.split("\\.")[0]);
于 2013-02-04T11:37:07.017 回答
-1
public static void main(String[] args) {
    Double x = new Double("39.33");
    Double y = new Double("39.0");

   printDouble(x);
   printDouble(y);

}

public static void printDouble(Double dbl){
    System.out.println(dbl.toString().replaceAll("[0]*$", "").replaceAll(".$", ""));
}
于 2013-02-04T11:43:05.420 回答