方法 |
描述 |
add(BigDecimal) |
BigDecimal對象中的值相加,然后返回這個對象容达。 |
subtract(BigDecimal) |
BigDecimal對象中的值相減古涧,然后返回這個對象。 |
multiply(BigDecimal) |
BigDecimal對象中的值相乘花盐,然后返回這個對象羡滑。 |
divide(BigDecimal) |
BigDecimal對象中的值相除,然后返回這個對象算芯。 |
toString() |
將BigDecimal對象的數(shù)值轉(zhuǎn)換成字符串柒昏。 |
doubleValue() |
將BigDecimal對象中的值以雙精度數(shù)返回。 |
floatValue() |
將BigDecimal對象中的值以單精度數(shù)返回熙揍。 |
longValue() |
將BigDecimal對象中的值以長整數(shù)返回职祷。 |
intValue() |
將BigDecimal對象中的值以整數(shù)返回。 |
setScale(int) |
int表示小數(shù)保留的位數(shù)届囚,默認(rèn)為四舍五入有梆; |
number.setScale(1,BigDecimal.ROUND_HALF_UP); |
也表示四舍五入; |
new BigDecimal(zitBanance).compareTo(BigDecimal.ZERO)==0//判斷是否等于0奖亚;
//BigDecimal的提供了add(),subtract(),multiply()和divide()四種方法淳梦,分別為加減乘除
BigDecimal rateBig=new BigDecimal(MainActivity.ethRate);
BigDecimal scoreBig=new BigDecimal(exchangeListEntity.getScore());
String val=scoreBig.divide(rateBig).toString();
比較大小
BigDecimal ethLar=new BigDecimal("500");
BigDecimal trasNum=new BigDecimal("600");
Log.e(TAG, "initData daxiao: "+ethLar.compareTo(trasNum) );
輸出“-1”表示為小于,0表示等于昔字,1表示大于
package com.app.lxx.distributionapp.Utils;
import java.math.BigDecimal;
public class BigDecimalUtils {
/**
* 提供精確的加法運(yùn)算
*
* @param v1 被加數(shù)
* @param v2 加數(shù)
* @param scale 保留scale 位小數(shù)
* @return 兩個參數(shù)的和
*/
public static String add(String v1, String v2, int scale) {
if (scale < 0) {
throw new IllegalArgumentException("保留的小數(shù)位數(shù)必須大于零");
}
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.add(b2).setScale(scale, BigDecimal.ROUND_HALF_UP).toString();
}
/**
* 提供精確的減法運(yùn)算
*
* @param v1 被減數(shù)
* @param v2 減數(shù)
* @param scale 保留scale 位小數(shù)
* @return 兩個參數(shù)的差
*/
public static String sub(String v1, String v2, int scale) {
if (scale < 0) {
throw new IllegalArgumentException("保留的小數(shù)位數(shù)必須大于零");
}
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.subtract(b2).setScale(scale, BigDecimal.ROUND_HALF_UP).toString();
}
/**
* 提供精確的乘法運(yùn)算
*
* @param v1 被乘數(shù)
* @param v2 乘數(shù)
* @param scale 保留scale 位小數(shù)
* @return 兩個參數(shù)的積
*/
public static String mul(String v1, String v2, int scale) {
if (scale < 0) {
throw new IllegalArgumentException("保留的小數(shù)位數(shù)必須大于零");
}
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.multiply(b2).setScale(scale, BigDecimal.ROUND_HALF_UP).toString();
}
/**
* 提供精確的除法運(yùn)算爆袍。當(dāng)發(fā)生除不盡的情況時,由scale參數(shù)指定精度作郭,以后的數(shù)字四舍五入
*
* @param v1 被除數(shù)
* @param v2 除數(shù)
* @param scale 表示需要精確到小數(shù)點(diǎn)以后幾位
* @return 兩個參數(shù)的商
*/
public static String div(String v1, String v2, int scale) {
if (scale < 0) {
throw new IllegalArgumentException("保留的小數(shù)位數(shù)必須大于零");
}
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
BigDecimal divide = b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP);
// BigDecimal divide = b1.divide(b2);
return divide.toString();
}
/**
* 提供精確的小數(shù)位四舍五入處理
*
* @param v 需要四舍五入的數(shù)字
* @param scale 小數(shù)點(diǎn)后保留幾位
* @return 四舍五入后的結(jié)果
*/
public static double round(double v, int scale) {
if (scale < 0) {
throw new IllegalArgumentException("保留的小數(shù)位數(shù)必須大于零");
}
BigDecimal b = new BigDecimal(Double.toString(v));
return b.setScale(scale, BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* 提供精確的小數(shù)位四舍五入處理
*
* @param v 需要四舍五入的數(shù)字
* @param scale 小數(shù)點(diǎn)后保留幾位
* @return 四舍五入后的結(jié)果
*/
public static String round(String v, int scale) {
if (scale < 0) {
throw new IllegalArgumentException("保留的小數(shù)位數(shù)必須大于零");
}
BigDecimal b = new BigDecimal(v);
return b.setScale(scale, BigDecimal.ROUND_HALF_UP).toString();
}
/**
* 取余數(shù)
*
* @param v1 被除數(shù)
* @param v2 除數(shù)
* @param scale 小數(shù)點(diǎn)后保留幾位
* @return 余數(shù)
*/
public static String remainder(String v1, String v2, int scale) {
if (scale < 0) {
throw new IllegalArgumentException("保留的小數(shù)位數(shù)必須大于零");
}
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.remainder(b2).setScale(scale, BigDecimal.ROUND_HALF_UP).toString();
}
/**
* 比較大小
*
* @param v1 被比較數(shù)
* @param v2 比較數(shù)
* @return 如果v1 大于v2 則 返回true 否則false
*/
public static boolean compare(String v1, String v2) {
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
int bj = b1.compareTo(b2);
if (bj > 0)
return true;
else
return false;
}
}