拆分时处理双倍价值的最佳方法是什么?

时间:2013-02-04 11:34:52

标签: java

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) ..请告诉我最好的方法吗?

5 个答案:

答案 0 :(得分:1)

如果将double转换为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);
}

答案 1 :(得分:1)

试试这个:

Double d = Double.parseDouble("35.0");
String result = NumberFormat.getNumberInstance().format(d.doubleValue())
System.out.println(result);

答案 2 :(得分:0)

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

答案 3 :(得分:0)

你可以做到

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

这将导致l成为double的整数部分。 (假设数量少于9亿亿)

如果你真的想使用分割,你可以做以下稍微慢一点但如果数字太大会抛出异常。

long l = Long.parseLong(x.split("\\.")[0]);

答案 4 :(得分:-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(".$", ""));
}