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

これを試して:

Double d = Double.parseDouble("35.0");
String result = NumberFormat.getNumberInstance().format(d.doubleValue())
System.out.println(result);
于 2013-02-04T11:54:16.970 に答える
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);
}
于 2013-02-04T11:39:14.833 に答える
0

必要なのは、数値を double として読み取り、int にキャストすることだけです。これにより、数値が効果的に切り捨てられます。

于 2013-02-04T11:37:00.103 に答える
0

できるよ

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

これによりl、double の整数部分になります。(但し、90億未満の場合)

本当に分割を使用したい場合は、次のようにすると少し遅くなりますが、数が大きすぎると例外がスローされます。

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 に答える