java.lang.Math.round()学習



public class MathTest{public static void main(String[]args){System.out.println("小数点以下1位=5");System.out.println("正:Math.round(11.5)="+Math.round(11.5)));System.out.println("負:Math.round(-11.5)="+Math.round(-11.5));System.out.println();System.out.println();System.out.println();System.out.ut.println.println();System.out.prin(「小数点以下第一位<5」);           System.out.println("正数:Math.round(11.46)="+Math.round(11.46));           System.out.println("負数:Math.round(-11.46)="+Math.round(-11.46));           System.out.println();             System.out.println(「小数点以下1位>5」)           System.out.println("正数:Math.round(11.68)="+Math.round(11.68));           System.out.println("負数:Math.round(-11.68)="+Math.round(-11.68));}運転結果:1、小数点以下1位=52、正数:Math.round(11.5)=123、負数:Math.round(-11.5)=-114、5、小数点以下第1位<56、正数:Math.round(11.46)=117、負数:Math.round(-11.46)=-118、9、小数点以下第1位>510、正数:Math.round(11.68)=1211、負数:Math.round(-11.68)=-12上記の例の運転結果によれば、1、パラメータの小数点後1位<5、演算結果がパラメータ整数部分であることをより記憶しやすいようにまとめることもできる.2、パラメータの小数点以下第一位>5で、演算結果はパラメータ整数部分の絶対値+1であり、記号(すなわち正負)は変わらない.3、パラメータの小数点以下第一位=5、正数演算結果は整数部分+1、負数演算結果は整数部分である.
 
終結:5全加算より大きく、5正数加算に等しく、5全加算より小さい.
転載先:http://blog.sina.com.cn/s/blog_4b06743c0100lst3.html
-----------------------------------------------------------------------------
以上はもとの分析です~なんとなく問題があります.例えばMath.round(-11.5345) == -12; 
JDK API 1.6を参照して、以下のように説明する.

round

public static long round(double a)

最も近いパラメータを返すlong .結果は整数に切り捨てられます:1/2を加えてfloorを呼び出し、結果を強制的にlongタイプ.つまり、結果は次の式の値に等しくなります.
 
(long)Math.floor(a + 0.5d)

特殊な状況は以下の通りです.
  • パラメータがNaNの場合、結果は0である.
  • 結果が負の無限大またはLong.MIN_VALUE以下の値である場合、結果はLong.MIN_VALUEの値に等しい.
  • パラメータが正の無限大またはLong.MAX_VALUE以上の値である場合、結果はLong.MAX_VALUEの値に等しい.

  •  
    パラメータ:a-端数処理longの浮動小数点値.
    戻り値:
    最も近いものに丸めlongのパラメータ値.
    これこそroundの本当の応用方法であることは明らかです.
    (long)Math.floor(a + 0.5d)

    このようにして、そんなに多くの推測と憶測がなくて、また気を使って記憶しなければなりません.
    Math.round(11.5)=12         (long)Math.floor(11.5+0.5)=12Math.round(-11.5)=-11  (long)Math.floor(-11.5+0.5)=-11
    Math.round(11.5345)=12  (long)Math.floor(11.5345+0.5)=12    Math.round(-11.5345)=-12 (long)Math.floor(-11.5345+0.5)=-12 
    Math.round(11.46)=11  (long)Math.floor(11.46+0.5)=11Math.round(-11.46)=-11  (long)Math.floor(-11.46+0.5)=-11
    Math.round(11.68)=12  (long)Math.floor(11.68+0.5)=12 Math.round(-11.68)=-12  (long)Math.floor(-11.68+0.5)=-12
    .............
    へへ~APIこそ王道!(設計上はやはり四捨五入-結果が大きくなる原則に合致している、ほほほ)