今私はこれを試しています:
int a = round(n);
どこn
されるdouble
が、それに動作していないです。何が悪いのですか?
round()
同じクラスのメソッドを?しましたかimport static java.lang.Math.*
?等。数値を丸める方法はたくさんあります。そのため、考えられる答えもたくさんあります。言い換えれば、あなたの質問は曖昧で曖昧であり、現在の形では合理的に答えることができません。暗闇の中で撮影しています。
今私はこれを試しています:
int a = round(n);
どこn
されるdouble
が、それに動作していないです。何が悪いのですか?
round()
同じクラスのメソッドを?しましたかimport static java.lang.Math.*
?等。数値を丸める方法はたくさんあります。そのため、考えられる答えもたくさんあります。言い換えれば、あなたの質問は曖昧で曖昧であり、現在の形では合理的に答えることができません。暗闇の中で撮影しています。
回答:
round()
スニペットのメソッドの戻り型は何ですか?
これがMath.round()
メソッドの場合、入力パラメーターがDoubleのときにLongを返します。
したがって、戻り値をキャストする必要があります。
int a = (int) Math.round(doubleVar);
Math.round()が気に入らない場合は、この単純なアプローチも使用できます。
int a = (int) (doubleVar + 0.5);
Math.round()
:stackoverflow.com/a/6468757/1715716
Math.round()
、あなたが提供するソリューションと「文字通り」同じように使用することを恐れる人々に対処していました、それがすべてです。乾杯。
0.5
か?
「最も近い」への2倍の丸めこのような整数にます。
1.4 > 1
1.6 > 2
-2.1 > -2
-1.3 > -1
-1.5- > -2
private int round(double d){
double dAbs = Math.abs(d);
int i = (int) dAbs;
double result = dAbs - (double) i;
if(result<0.5){
return d<0 ? -i : i;
}else{
return d<0 ? -(i+1) : i+1;
}
}
必要に応じて条件(結果<0.5)を変更できます。
import java.math.*;
public class TestRound11 {
public static void main(String args[]){
double d = 3.1537;
BigDecimal bd = new BigDecimal(d);
bd = bd.setScale(2,BigDecimal.ROUND_HALF_UP);
// output is 3.15
System.out.println(d + " : " + round(d, 2));
// output is 3.154
System.out.println(d + " : " + round(d, 3));
}
public static double round(double d, int decimalPlace){
// see the Javadoc about why we use a String in the constructor
// http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigDecimal.html#BigDecimal(double)
BigDecimal bd = new BigDecimal(Double.toString(d));
bd = bd.setScale(decimalPlace,BigDecimal.ROUND_HALF_UP);
return bd.doubleValue();
}
}
Math.round
言うのドキュメント:
引数を整数に丸めた結果を返します。結果はと同等
(int) Math.floor(f+0.5)
です。
にキャストする必要はありませんint
。たぶん、それは過去から変更されました。
public static int round(double d) {
if (d > 0) {
return (int) (d + 0.5);
} else {
return (int) (d - 0.5);
}
}
あなたは本当により完全な例を投稿する必要があるので、私たちはあなたが何をしようとしているのかを見ることができます。あなたが投稿したものから、ここに私が見ることができるものがあります。まず、組み込みのround()
メソッドはありません。を呼び出すかMath.round(n)
、静的にインポートしてMath.round
から、必要に応じて呼び出す必要があります。