亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bigdecimal.java

?? kaffe Java 解釋器語言,源碼,Java的子集系統,開放源代碼
?? JAVA
字號:
/* java.math.BigDecimal -- Arbitrary precision decimals.   Copyright (C) 1999, 2000, 2001, 2003 Free Software Foundation, Inc.This file is part of GNU Classpath.GNU Classpath is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2, or (at your option)any later version. GNU Classpath is distributed in the hope that it will be useful, butWITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNUGeneral Public License for more details.You should have received a copy of the GNU General Public Licensealong with GNU Classpath; see the file COPYING.  If not, write to theFree Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA02111-1307 USA.Linking this library statically or dynamically with other modules ismaking a combined work based on this library.  Thus, the terms andconditions of the GNU General Public License cover the wholecombination.As a special exception, the copyright holders of this library give youpermission to link this library with independent modules to produce anexecutable, regardless of the license terms of these independentmodules, and to copy and distribute the resulting executable underterms of your choice, provided that you also meet, for each linkedindependent module, the terms and conditions of the license of thatmodule.  An independent module is a module which is not derived fromor based on this library.  If you modify this library, you may extendthis exception to your version of the library, but you are notobligated to do so.  If you do not wish to do so, delete thisexception statement from your version. */package java.math;import java.math.BigInteger;public class BigDecimal extends Number implements Comparable{  private BigInteger intVal;  private int scale;  private static final long serialVersionUID = 6108874887143696463L;  private final static BigDecimal ZERO =     new BigDecimal (BigInteger.valueOf (0), 0);  private final static BigDecimal ONE =     new BigDecimal (BigInteger.valueOf (1), 0);  public final static int ROUND_UP = 0;  public final static int ROUND_DOWN = 1;  public final static int ROUND_CEILING = 2;  public final static int ROUND_FLOOR = 3;  public final static int ROUND_HALF_UP = 4;  public final static int ROUND_HALF_DOWN = 5;  public final static int ROUND_HALF_EVEN = 6;  public final static int ROUND_UNNECESSARY = 7;  public BigDecimal (BigInteger num)   {    this (num, 0);  }  public BigDecimal (BigInteger num, int scale) throws NumberFormatException   {    if (scale < 0)       throw new NumberFormatException ("scale of " + scale + " is < 0");    this.intVal = num;    this.scale = scale;  }  public BigDecimal (double num) throws NumberFormatException   {    if (Double.isInfinite (num) || Double.isNaN (num))      throw new NumberFormatException ("invalid argument: " + num);    // Note we can't convert NUM to a String and then use the    // String-based constructor.  The BigDecimal documentation makes    // it clear that the two constructors work differently.    final int mantissaBits = 52;    final int exponentBits = 11;    final long mantMask = (1L << mantissaBits) - 1;    final long expMask = (1L << exponentBits) - 1;    long bits = Double.doubleToLongBits (num);    long mantissa = bits & mantMask;    long exponent = (bits >>> mantissaBits) & expMask;    boolean denormal = exponent == 0;    // Correct the exponent for the bias.    exponent -= denormal ? 1022 : 1023;    // Now correct the exponent to account for the bits to the right    // of the decimal.    exponent -= mantissaBits;    // Ordinary numbers have an implied leading `1' bit.    if (! denormal)      mantissa |= (1L << mantissaBits);    // Shave off factors of 10.    while (exponent < 0 && (mantissa & 1) == 0)      {	++exponent;	mantissa >>= 1;      }    intVal = BigInteger.valueOf (bits < 0 ? - mantissa : mantissa);    if (exponent < 0)      {	// We have MANTISSA * 2 ^ (EXPONENT).	// Since (1/2)^N == 5^N * 10^-N we can easily convert this	// into a power of 10.	scale = (int) (- exponent);	BigInteger mult = BigInteger.valueOf (5).pow (scale);	intVal = intVal.multiply (mult);      }    else      {	intVal = intVal.shiftLeft ((int) exponent);	scale = 0;      }  }  public BigDecimal (String num) throws NumberFormatException   {    int len = num.length();    int start = 0, point = 0;    int dot = -1;    boolean negative = false;    if (num.charAt(0) == '+')      {	++start;	++point;      }    else if (num.charAt(0) == '-')      {	++start;	++point;	negative = true;      }    while (point < len)      {	char c = num.charAt (point);	if (c == '.')	  {	    if (dot >= 0)	      throw new NumberFormatException ("multiple `.'s in number");	    dot = point;	  }	else if (c == 'e' || c == 'E')	  break;	else if (Character.digit (c, 10) < 0)	  throw new NumberFormatException ("unrecognized character: " + c);	++point;      }    String val;    if (dot >= 0)      {	val = num.substring (start, dot) + num.substring (dot + 1, point);	scale = point - 1 - dot;      }    else      {	val = num.substring (start, point);	scale = 0;      }    if (val.length () == 0)      throw new NumberFormatException ("no digits seen");    if (negative)      val = "-" + val;    intVal = new BigInteger (val);    // Now parse exponent.    if (point < len)      {        point++;        if (num.charAt(point) == '+')          point++;        if (point >= len )          throw new NumberFormatException ("no exponent following e or E");	        try 	  {	    int exp = Integer.parseInt (num.substring (point));	    exp -= scale;	    if (signum () == 0)	      scale = 0;	    else if (exp > 0)	      {		intVal = intVal.multiply (BigInteger.valueOf (10).pow (exp));		scale = 0;	      }	    else	      scale = - exp;	  }        catch (NumberFormatException ex) 	  {	    throw new NumberFormatException ("malformed exponent");	  }      }  }  public static BigDecimal valueOf (long val)   {    return valueOf (val, 0);  }  public static BigDecimal valueOf (long val, int scale)     throws NumberFormatException   {    if ((scale == 0) && ((int)val == val))      switch ((int) val)	{	case 0:	  return ZERO;	case 1:	  return ONE;	}    return new BigDecimal (BigInteger.valueOf (val), scale);  }  public BigDecimal add (BigDecimal val)   {    // For addition, need to line up decimals.  Note that the movePointRight    // method cannot be used for this as it might return a BigDecimal with    // scale == 0 instead of the scale we need.    BigInteger op1 = intVal;    BigInteger op2 = val.intVal;    if (scale < val.scale)      op1 = op1.multiply (BigInteger.valueOf (10).pow (val.scale - scale));    else if (scale > val.scale)      op2 = op2.multiply (BigInteger.valueOf (10).pow (scale - val.scale));    return new BigDecimal (op1.add (op2), Math.max (scale, val.scale));  }  public BigDecimal subtract (BigDecimal val)   {    return this.add(val.negate());  }  public BigDecimal multiply (BigDecimal val)   {    return new BigDecimal (intVal.multiply (val.intVal), scale + val.scale);  }  public BigDecimal divide (BigDecimal val, int roundingMode)     throws ArithmeticException, IllegalArgumentException   {    return divide (val, scale, roundingMode);  }  public BigDecimal divide(BigDecimal val, int newScale, int roundingMode)    throws ArithmeticException, IllegalArgumentException   {    if (roundingMode < 0 || roundingMode > 7)      throw 	new IllegalArgumentException("illegal rounding mode: " + roundingMode);    if (newScale < 0)      throw new ArithmeticException ("scale is negative: " + newScale);    if (intVal.signum () == 0)	// handle special case of 0.0/0.0      return newScale == 0 ? ZERO : new BigDecimal (ZERO.intVal, newScale);        // Ensure that pow gets a non-negative value.    int valScale = val.scale;    BigInteger valIntVal = val.intVal;    int power = newScale - (scale - val.scale);    if (power < 0)      {	// Effectively increase the scale of val to avoid an	// ArithmeticException for a negative power.        valIntVal = valIntVal.multiply (BigInteger.valueOf (10).pow (-power));	power = 0;      }    BigInteger dividend = intVal.multiply (BigInteger.valueOf (10).pow (power));        BigInteger parts[] = dividend.divideAndRemainder (valIntVal);    BigInteger unrounded = parts[0];    if (parts[1].signum () == 0) // no remainder, no rounding necessary      return new BigDecimal (unrounded, newScale);    if (roundingMode == ROUND_UNNECESSARY)      throw new ArithmeticException ("newScale is not large enough");    int sign = intVal.signum () * valIntVal.signum ();    if (roundingMode == ROUND_CEILING)      roundingMode = (sign > 0) ? ROUND_UP : ROUND_DOWN;    else if (roundingMode == ROUND_FLOOR)      roundingMode = (sign < 0) ? ROUND_UP : ROUND_DOWN;    else      {	// half is -1 if remainder*2 < positive intValue (*power), 0 if equal,	// 1 if >. This implies that the remainder to round is less than,	// equal to, or greater than half way to the next digit.	BigInteger posRemainder	  = parts[1].signum () < 0 ? parts[1].negate() : parts[1];	valIntVal = valIntVal.signum () < 0 ? valIntVal.negate () : valIntVal;	int half = posRemainder.shiftLeft(1).compareTo(valIntVal);	switch(roundingMode)	  {	  case ROUND_HALF_UP:	    roundingMode = (half < 0) ? ROUND_DOWN : ROUND_UP;	    break;	  case ROUND_HALF_DOWN:	    roundingMode = (half > 0) ? ROUND_UP : ROUND_DOWN;	    break;	  case ROUND_HALF_EVEN:	    if (half < 0)	      roundingMode = ROUND_DOWN;	    else if (half > 0)	      roundingMode = ROUND_UP;	    else if (unrounded.testBit(0)) // odd, then ROUND_HALF_UP	      roundingMode = ROUND_UP;	    else                           // even, ROUND_HALF_DOWN	      roundingMode = ROUND_DOWN;	    break;	  }      }    if (roundingMode == ROUND_UP)      unrounded = unrounded.add (BigInteger.valueOf (sign > 0 ? 1 : -1));    // roundingMode == ROUND_DOWN    return new BigDecimal (unrounded, newScale);  }      public int compareTo (BigDecimal val)   {    if (scale == val.scale)      return intVal.compareTo (val.intVal);    BigInteger thisParts[] =       intVal.divideAndRemainder (BigInteger.valueOf (10).pow (scale));    BigInteger valParts[] =      val.intVal.divideAndRemainder (BigInteger.valueOf (10).pow (val.scale));        int compare;    if ((compare = thisParts[0].compareTo (valParts[0])) != 0)      return compare;    // quotients are the same, so compare remainders    // remove trailing zeros    if (thisParts[1].equals (BigInteger.valueOf (0)) == false)      while (thisParts[1].mod (BigInteger.valueOf (10)).equals	     (BigInteger.valueOf (0)))      thisParts[1] = thisParts[1].divide (BigInteger.valueOf (10));    // again...    if (valParts[1].equals(BigInteger.valueOf (0)) == false)      while (valParts[1].mod (BigInteger.valueOf (10)).equals	     (BigInteger.valueOf (0)))	valParts[1] = valParts[1].divide (BigInteger.valueOf (10));    // and compare them    return thisParts[1].compareTo (valParts[1]);  }  public int compareTo (Object val)   {    return(compareTo((BigDecimal)val));  }  public boolean equals (Object o)   {    return (o instanceof BigDecimal 	    && scale == ((BigDecimal) o).scale	    && compareTo ((BigDecimal) o) == 0);  }  public int hashCode()   {    return intValue() ^ scale;  }  public BigDecimal max (BigDecimal val)  {    switch (compareTo (val))       {      case 1:	return this;      default:	return val;      }  }  public BigDecimal min (BigDecimal val)   {    switch (compareTo (val))       {      case -1:	return this;      default:	return val;      }  }  public BigDecimal movePointLeft (int n)  {    return (n < 0) ? movePointRight (-n) : new BigDecimal (intVal, scale + n);  }  public BigDecimal movePointRight (int n)  {    if (n < 0)      return movePointLeft (-n);    if (scale >= n)      return new BigDecimal (intVal, scale - n);    return new BigDecimal (intVal.multiply 			   (BigInteger.valueOf (10).pow (n - scale)), 0);  }  public int signum ()   {    return intVal.signum ();  }  public int scale ()   {    return scale;  }    public BigInteger unscaledValue()  {    return intVal;  }  public BigDecimal abs ()   {    return new BigDecimal (intVal.abs (), scale);  }  public BigDecimal negate ()   {    return new BigDecimal (intVal.negate (), scale);  }  public String toString ()   {    String bigStr = intVal.toString();    if (scale == 0)       return bigStr;    boolean negative = (bigStr.charAt(0) == '-');    int point = bigStr.length() - scale - (negative ? 1 : 0);    StringBuffer sb = new StringBuffer(bigStr.length() + 2 +				       (point <= 0 ? (-point + 1) : 0));    if (point <= 0)      {        if (negative)          sb.append('-');        sb.append('0').append('.');        while (point < 0)          {            sb.append('0');            point++;          }        sb.append(bigStr.substring(negative ? 1 : 0));      }    else      {	sb.append(bigStr);	sb.insert(point + (negative ? 1 : 0), '.');      }    return sb.toString();  }  public BigInteger toBigInteger ()   {    return scale == 0 ? intVal :      intVal.divide (BigInteger.valueOf (10).pow (scale));  }  public int intValue ()   {    return toBigInteger ().intValue ();  }  public long longValue ()  {    return toBigInteger().longValue();  }  public float floatValue()   {    return Float.valueOf(toString()).floatValue();  }  public double doubleValue()   {    return Double.valueOf(toString()).doubleValue();  }  public BigDecimal setScale (int scale) throws ArithmeticException  {    return setScale (scale, ROUND_UNNECESSARY);  }  public BigDecimal setScale (int scale, int roundingMode)    throws ArithmeticException, IllegalArgumentException  {    return divide (ONE, scale, roundingMode);  }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
狠狠色丁香婷婷综合| 久久免费视频一区| 欧美变态tickling挠脚心| 中文字幕不卡三区| 奇米777欧美一区二区| 99re热这里只有精品视频| 日韩一区二区精品葵司在线| 中文字幕一区二| 国产一区二区三区免费在线观看| 欧美最猛性xxxxx直播| 欧美国产日韩亚洲一区| 天天操天天干天天综合网| 成人18视频日本| 久久欧美一区二区| 美女视频黄久久| 欧美日韩国产中文| 一区二区三区欧美| 色综合色狠狠天天综合色| 久久精品视频在线看| 日本伊人色综合网| 欧美蜜桃一区二区三区| 亚洲精品五月天| 97久久精品人人澡人人爽| 久久久久久一级片| 国产精品一区在线观看乱码| 日韩免费视频线观看| 日日夜夜免费精品| 67194成人在线观看| 图片区小说区国产精品视频| 色哟哟亚洲精品| 亚洲少妇30p| 97se亚洲国产综合自在线观| 中文字幕一区二区三区视频| 大陆成人av片| 中文字幕+乱码+中文字幕一区| 极品尤物av久久免费看| 精品久久久久久久久久久久包黑料| 亚洲国产一区二区三区| 欧美视频在线播放| 日韩国产精品大片| 日韩免费高清电影| 国产精品中文字幕一区二区三区| 欧美一二三区在线观看| 久久99久久99精品免视看婷婷 | 国产一区二区福利| 日韩欧美亚洲另类制服综合在线 | 欧美群妇大交群中文字幕| 五月天视频一区| 欧美一区二区三区播放老司机| 日韩va欧美va亚洲va久久| 日韩欧美一级二级三级| 国产成人在线免费观看| 亚洲日本一区二区| 欧美日韩色综合| 久久成人免费网站| 国产精品色婷婷久久58| 91网站最新地址| 一区二区三区在线视频免费观看| 欧美精品1区2区3区| 老司机精品视频线观看86| 中文欧美字幕免费| 欧美专区日韩专区| 国内偷窥港台综合视频在线播放| 中文在线资源观看网站视频免费不卡| 一本大道久久a久久综合| 亚洲成人资源在线| 欧美激情中文字幕| 欧美日韩国产小视频| 国产91精品在线观看| 亚洲一二三区不卡| 久久久不卡网国产精品二区| 91麻豆免费观看| 麻豆精品视频在线观看| 亚洲日本在线天堂| 久久丝袜美腿综合| 欧美日韩你懂的| 成人做爰69片免费看网站| 午夜精品一区在线观看| 中文字幕一区在线观看| 日韩一区二区三区电影| 91在线观看下载| 狠狠狠色丁香婷婷综合久久五月| 亚洲欧美色综合| 久久久.com| 日韩美女视频在线| 精品视频一区二区不卡| 99久久久久久| 国产福利不卡视频| 日韩不卡在线观看日韩不卡视频| 国产精品成人一区二区艾草 | 欧美一区二区三区日韩| 99riav久久精品riav| 国产精品一区三区| 精品一区二区三区影院在线午夜 | 日韩毛片精品高清免费| 久久免费电影网| 日韩欧美中文一区| 欧美日韩一区高清| 色呦呦国产精品| av网站免费线看精品| 国产成人免费高清| 国产在线日韩欧美| 日本aⅴ亚洲精品中文乱码| 亚洲美女视频一区| 亚洲欧美中日韩| 国产女主播在线一区二区| 久久五月婷婷丁香社区| 精品少妇一区二区| 亚洲精品在线一区二区| 欧美本精品男人aⅴ天堂| 777色狠狠一区二区三区| 欧美在线免费视屏| 欧美在线一区二区| 欧美日韩美少妇| 欧美日韩国产综合视频在线观看| 欧美一a一片一级一片| 日本精品一级二级| 欧美在线视频全部完| 色婷婷综合激情| 欧美午夜宅男影院| 69堂成人精品免费视频| 91精品国产综合久久蜜臀| 欧美一区二区观看视频| 日韩免费观看高清完整版在线观看| 91精品国产品国语在线不卡| 日韩一区二区在线观看视频| 欧美成人女星排名| 久久久久久久久免费| 国产精品久久久久aaaa樱花 | 国产日韩影视精品| 国产精品国产精品国产专区不片| 亚洲天天做日日做天天谢日日欢| 亚洲激情中文1区| 亚洲一区二区三区美女| 免费成人在线网站| 国产成人免费网站| av成人动漫在线观看| 欧美性高清videossexo| 日韩欧美色综合网站| 国产亚洲综合在线| 亚洲免费av观看| 日本伊人精品一区二区三区观看方式| 国产一区二区三区在线观看免费视频| aaa亚洲精品| 欧美色涩在线第一页| 精品日本一线二线三线不卡| 国产精品美女久久久久久久| 一区二区三区产品免费精品久久75| 日韩成人av影视| 成人黄色小视频在线观看| 在线观看视频一区二区欧美日韩 | 在线影院国内精品| 欧美成人精品高清在线播放| 国产精品久久久久毛片软件| 午夜精品久久久久久久蜜桃app | 欧美国产日韩在线观看| 午夜精品久久久久久| 国产精品一区一区三区| 欧美日韩国产a| 国产片一区二区| 日本欧美在线观看| 91丝袜高跟美女视频| 精品久久久久av影院| 亚洲国产一区二区三区青草影视| 国产毛片精品视频| 欧美精品1区2区| 亚洲免费三区一区二区| 国产综合色在线| 欧美日本一道本| 成人欧美一区二区三区视频网页| 毛片av中文字幕一区二区| 色综合久久综合网欧美综合网| 欧美一区二区网站| 一区二区理论电影在线观看| 国产精品一区2区| 欧美一级黄色片| 亚洲成人第一页| 色婷婷亚洲综合| 一区在线播放视频| 国产精品888| 精品国产一区二区三区忘忧草| 亚洲无人区一区| 91九色最新地址| 亚洲欧美欧美一区二区三区| 国产精品一区久久久久| 精品久久人人做人人爰| 日韩av在线免费观看不卡| 欧美视频日韩视频在线观看| 亚洲精品视频在线看| 99re热这里只有精品免费视频| 国产人久久人人人人爽| 国产一区二区影院| 久久嫩草精品久久久精品| 国内精品国产三级国产a久久| 欧美一级二级在线观看| 日韩精品国产精品| 欧美剧情电影在线观看完整版免费励志电影| 亚洲男人都懂的| 91免费国产在线观看| 亚洲欧洲综合另类|