112

たとえば、変数 3.545555555 を 3.54 に切り詰めたいとします。

4

15 に答える 15

160

表示目的でそれが必要な場合は、次を使用しますjava.text.DecimalFormat

 new DecimalFormat("#.##").format(dblVar);

計算に必要な場合は、次を使用しますjava.lang.Math

 Math.floor(value * 100) / 100;
于 2011-10-12T22:47:13.777 に答える
9

最初に、a は 2 進数の分数であり、実際には小数点以下の桁数doubleがないことに注意してください。

小数点以下の桁数が必要な場合は、切り捨て方法のある を使用するか、 を使用BigDecimalして を取得します。setScale()DecimalFormatString

于 2011-10-12T22:52:20.543 に答える
7

何らかの理由で a を使用したくない場合は、 yourを anにBigDecimalキャストして切り詰めることができます。doubleint

1 の位に切り捨てたい場合:

  • 単にキャストするint

10位まで:

  • 10倍する
  • にキャストint
  • キャストバックdouble
  • そして10で割ります。

百の

  • 100で掛ける、割るなど。

例:

static double truncateTo( double unroundedNumber, int decimalPlaces ){
    int truncatedNumberInt = (int)( unroundedNumber * Math.pow( 10, decimalPlaces ) );
    double truncatedNumber = (double)( truncatedNumberInt / Math.pow( 10, decimalPlaces ) );
    return truncatedNumber;
}

この例でdecimalPlacesは、 は目的の 1 の位を超える位の数になるため、1 は 10 の位に丸められ、2 は 10 の位に丸められます(0 は 1 の位に丸められ、負の 1 は 10 の位に丸められます)など)

于 2014-09-18T03:18:58.250 に答える
6

NumberFormatクラスオブジェクトを使用してタスクを実行できます。

// Creating number format object to set 2 places after decimal point
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(2);            
nf.setGroupingUsed(false);

System.out.println(nf.format(precision));// Assuming precision is a double type variable
于 2011-10-13T01:12:30.547 に答える
5

3.545555555 は 3.54 を取得します。これについては、次のことを試してください。

    DecimalFormat df = new DecimalFormat("#.##");

    df.setRoundingMode(RoundingMode.FLOOR);

    double result = new Double(df.format(3.545555555);

これにより、= 3.54 が得られます。

于 2015-01-23T09:49:59.820 に答える
2

たぶんMath.floor(value * 100) / 1003.54のような値は、 で正確に表されない場合があることに注意してくださいdouble

于 2011-10-12T22:49:25.810 に答える
0

多分次の:

double roundTwoDecimals(double d) { 
      DecimalFormat twoDForm = new DecimalFormat("#.##"); 
      return Double.valueOf(twoDForm.format(d));
}  
于 2011-10-12T22:51:37.113 に答える
0

私が使用する方法は次のとおりです。

double a=3.545555555; // just assigning your decimal to a variable
a=a*100;              // this sets a to 354.555555
a=Math.floor(a);      // this sets a to 354
a=a/100;              // this sets a to 3.54 and thus removing all your 5's

これも実行できます。

a=Math.floor(a*100) / 100;
于 2015-09-07T17:39:40.787 に答える
-1

私はManiのわずかに修正されたバージョンを持っています。

private static BigDecimal truncateDecimal(final double x, final int numberofDecimals) {
    return new BigDecimal(String.valueOf(x)).setScale(numberofDecimals, BigDecimal.ROUND_DOWN);
}

public static void main(String[] args) {
    System.out.println(truncateDecimal(0, 2));
    System.out.println(truncateDecimal(9.62, 2));
    System.out.println(truncateDecimal(9.621, 2));
    System.out.println(truncateDecimal(9.629, 2));
    System.out.println(truncateDecimal(9.625, 2));
    System.out.println(truncateDecimal(9.999, 2));
    System.out.println(truncateDecimal(3.545555555, 2));

    System.out.println(truncateDecimal(9.0, 2));
    System.out.println(truncateDecimal(-9.62, 2));
    System.out.println(truncateDecimal(-9.621, 2));
    System.out.println(truncateDecimal(-9.629, 2));
    System.out.println(truncateDecimal(-9.625, 2));
    System.out.println(truncateDecimal(-9.999, 2));
    System.out.println(truncateDecimal(-9.0, 2));
    System.out.println(truncateDecimal(-3.545555555, 2));

}

出力:

0.00
9.62
9.62
9.62
9.62
9.99
9.00
3.54
-9.62
-9.62
-9.62
-9.62
-9.99
-9.00
-3.54
于 2014-09-11T12:44:50.593 に答える
-2

これは私のために働いた:

double input = 104.8695412  //For example

long roundedInt = Math.round(input * 100);
double result = (double) roundedInt/100;

//result == 104.87

私は個人的にこのバージョンが好きです。これは、文字列 (または同様のもの) に変換してからフォーマットするのではなく、実際に数値で丸めを実行するためです。

于 2015-11-14T07:06:01.397 に答える