Java 分割时处理双值的最佳方法是什么?

Java 分割时处理双值的最佳方法是什么?,java,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;

请告诉我格式化/拆分值的最佳方法: 我的需要是

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((Integer.parseInt(parts[1]))>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
这将导致
l
成为双精度的整数部分。(前提是数量少于90亿)

如果您真的想使用split,您可以执行以下操作,这将稍微慢一点,但如果数字太大,将引发异常

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

如果将double转换为int,则小数点将被忽略

对于这个问题,应该是这样的:

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

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(".$", ""));
}

问题到底是什么?39.0和39.0之间有什么区别吗?如果您在显示值时需要这种区别,只需在进行输入之前格式化输出,如(“39.33”或“39.0”)。。。如果输入为“39.33”,则结果必须为39.33;如果输入为“39.0”,则结果必须为39是,前提是数字小于20亿。IMHO使用
int
@Abu。。是的,前提是数量少于40亿左右@彼得拉维。(笑声)我刚增加了int的大小吗?@RohitJain可能被某个地方的
无符号int
污染了;)你能提供一些代码作为例子来说明这一点吗?在这两种情况下(“39.33”或“39.0”)都只给出39。。。我需要像如果“39.33”的结果必须是39.33或如果“39.0”的结果必须是39我希望双精度和整数的比较工作。。。但是尝试一下并给出反馈…哇。。我看起来真的只是这样。。100%满足我的期望Double d=Double.parseDouble(“35.0”);String result=NumberFormat.getNumberInstance().format(d))为什么需要d.doubleValue())
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(".$", ""));
}
Double d = Double.parseDouble("35.0");
String result = NumberFormat.getNumberInstance().format(d.doubleValue())
System.out.println(result);