import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.NumberFormat;
public class MathUtil{
/**
* @param d1 被除数
* @param d2 除数
* @param digit 位数
* @return
*/
public static BigDecimal divide(BigDecimal d1,BigDecimal d2,int digit){
if(d2.intValue()==0){
return new BigDecimal(0);
}else{
return d1.divide(d2,digit,BigDecimal.ROUND_HALF_UP);
}
}
/**
* 两数相除得到百分比
* @param d1 被除数
* @param d2 除数
* @param digit 位数
* @return
*/
public static String divideToPercent(BigDecimal d1,BigDecimal d2,int digit){
if(d2.intValue()==0){
return "0%";
}else{
return convertToPercent(d1.divide(d2,3,BigDecimal.ROUND_HALF_UP).toString(),digit);
}
}
/**
* 获取增长率:(d1-d2)/d2 --->转换为百分比
* @param d1
* @param d2
* @param digit 百分比位数
* @return
*/
public static String getRatio(BigDecimal d1,BigDecimal d2,int digit) {
String ratio = "0%";
if(d2.floatValue()==0){
ratio = d1.multiply(new BigDecimal(100)).setScale(1, BigDecimal.ROUND_HALF_UP).toString()+"%";
}else{
BigDecimal d3 = d1.subtract(d2).divide(d2,digit+2, RoundingMode.HALF_UP);
ratio = convertToPercent(d3.toString(), digit);
}
return ratio;
}
/**
* 转化为百分比
* @param str
* @param
* @return
*/
public static String convertToPercent(String str,int digit){
NumberFormat percent = NumberFormat.getPercentInstance();
percent.setMaximumFractionDigits(digit);
String ratio = percent.format(Double.parseDouble(str));
return ratio;
}
/**
* 百分比转换为BigDecimal
* @param str
* @return
*/
public static BigDecimal convertPercentToDecimal(String str){
String s1 = str.split("%")[0];
BigDecimal d1 = new BigDecimal(s1).divide(new BigDecimal(100));
return d1;
}
/**
* 十进制转二进制 返回二进制字符串
* @param: num 十进制数
* @param: bits 保留位数
* @author: liudongxin
* @date: 2020/11/2 - 18:00
*/
public static String toBinaryString(int num,int bits){
StringBuilder stringBuilder = new StringBuilder();
for(int i = bits;i >= 1; i--) {
stringBuilder.append(num >>> i & 1);
}
return stringBuilder.toString();
}
/**
* 异或运算
* @param: binaryString 二进制数
* @param: compareString 对照值
* @author: liudongxin
* @date: 2020/11/2 - 18:00
*/
public static String bitWiseXor(String binaryString, String compareString){
//转换成字符数组
StringBuilder stringBuilder = new StringBuilder();
char[] chars = binaryString.toCharArray();
char[] compareChars = compareString.toCharArray();
for (int i = 0; i < chars.length; i++) {
stringBuilder.append(chars[i] ^ compareChars[i]);
}
return stringBuilder.toString();
}
/**
* 计算幂次方 -1
* @param: num 十进制数
* @param: power 保留位数
* @author: liudongxin
* @date: 2020/11/2 - 18:00
*/
public static int calPower(int num,int power){
return (int)(Math.floor(Math.pow(num,power)) - 1);
}
}
MathUtilBigDecimalツールクラス
おすすめ
転載: blog.csdn.net/weixin_39472101/article/details/114012407
おすすめ
ランキング