方法 |
描述 |
add(BigDecimal) |
BigDecimal对象中的值相加,然后返回这个对象。 |
subtract(BigDecimal) |
BigDecimal对象中的值相减,然后返回这个对象。 |
multiply(BigDecimal) |
BigDecimal对象中的值相乘,然后返回这个对象。 |
divide(BigDecimal) |
BigDecimal对象中的值相除,然后返回这个对象。 |
toString() |
将BigDecimal对象的数值转换成字符串。 |
doubleValue() |
将BigDecimal对象中的值以双精度数返回。 |
floatValue() |
将BigDecimal对象中的值以单精度数返回。 |
longValue() |
将BigDecimal对象中的值以长整数返回。 |
intValue() |
将BigDecimal对象中的值以整数返回。 |
setScale(int) |
int表示小数保留的位数,默认为四舍五入; |
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 {
/**
* 提供精确的加法运算
*
* @param v1 被加数
* @param v2 加数
* @param scale 保留scale 位小数
* @return 两个参数的和
*/
public static String add(String v1, String v2, int scale) {
if (scale < 0) {
throw new IllegalArgumentException("保留的小数位数必须大于零");
}
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.add(b2).setScale(scale, BigDecimal.ROUND_HALF_UP).toString();
}
/**
* 提供精确的减法运算
*
* @param v1 被减数
* @param v2 减数
* @param scale 保留scale 位小数
* @return 两个参数的差
*/
public static String sub(String v1, String v2, int scale) {
if (scale < 0) {
throw new IllegalArgumentException("保留的小数位数必须大于零");
}
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.subtract(b2).setScale(scale, BigDecimal.ROUND_HALF_UP).toString();
}
/**
* 提供精确的乘法运算
*
* @param v1 被乘数
* @param v2 乘数
* @param scale 保留scale 位小数
* @return 两个参数的积
*/
public static String mul(String v1, String v2, int scale) {
if (scale < 0) {
throw new IllegalArgumentException("保留的小数位数必须大于零");
}
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.multiply(b2).setScale(scale, BigDecimal.ROUND_HALF_UP).toString();
}
/**
* 提供精确的除法运算。当发生除不尽的情况时,由scale参数指定精度,以后的数字四舍五入
*
* @param v1 被除数
* @param v2 除数
* @param scale 表示需要精确到小数点以后几位
* @return 两个参数的商
*/
public static String div(String v1, String v2, int scale) {
if (scale < 0) {
throw new IllegalArgumentException("保留的小数位数必须大于零");
}
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();
}
/**
* 提供精确的小数位四舍五入处理
*
* @param v 需要四舍五入的数字
* @param scale 小数点后保留几位
* @return 四舍五入后的结果
*/
public static double round(double v, int scale) {
if (scale < 0) {
throw new IllegalArgumentException("保留的小数位数必须大于零");
}
BigDecimal b = new BigDecimal(Double.toString(v));
return b.setScale(scale, BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* 提供精确的小数位四舍五入处理
*
* @param v 需要四舍五入的数字
* @param scale 小数点后保留几位
* @return 四舍五入后的结果
*/
public static String round(String v, int scale) {
if (scale < 0) {
throw new IllegalArgumentException("保留的小数位数必须大于零");
}
BigDecimal b = new BigDecimal(v);
return b.setScale(scale, BigDecimal.ROUND_HALF_UP).toString();
}
/**
* 取余数
*
* @param v1 被除数
* @param v2 除数
* @param scale 小数点后保留几位
* @return 余数
*/
public static String remainder(String v1, String v2, int scale) {
if (scale < 0) {
throw new IllegalArgumentException("保留的小数位数必须大于零");
}
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.remainder(b2).setScale(scale, BigDecimal.ROUND_HALF_UP).toString();
}
/**
* 比较大小
*
* @param v1 被比较数
* @param v2 比较数
* @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;
}
}
网友评论