parent
7b1f7a2059
commit
7b3d5711cd
@ -0,0 +1,116 @@ |
|||||||
|
package com.android.base.utils.common; |
||||||
|
|
||||||
|
import java.math.BigDecimal; |
||||||
|
|
||||||
|
/** |
||||||
|
* 使用 BigDecimal 计算 |
||||||
|
* |
||||||
|
* @author Ztiany |
||||||
|
* Email: 1169654504@qq.com |
||||||
|
* Date : 2016-12-06 14:58 |
||||||
|
*/ |
||||||
|
@SuppressWarnings("unused") |
||||||
|
public class BigDecimalCalculator { |
||||||
|
|
||||||
|
public static final BigDecimal ZERO = new BigDecimal("0"); |
||||||
|
private static final int SCALE = 2; |
||||||
|
|
||||||
|
private BigDecimalCalculator() { |
||||||
|
throw new UnsupportedOperationException(); |
||||||
|
} |
||||||
|
|
||||||
|
public static BigDecimal add(BigDecimal value1, float value2) { |
||||||
|
return value1.add(new BigDecimal(Float.toString(value2))); |
||||||
|
} |
||||||
|
|
||||||
|
public static BigDecimal add(float value1, float value2) { |
||||||
|
return new BigDecimal(Float.toString(value1)).add(new BigDecimal(Float.toString(value2))); |
||||||
|
} |
||||||
|
|
||||||
|
public static BigDecimal multiply(BigDecimal value1, float value2) { |
||||||
|
return value1.multiply(new BigDecimal(Float.toString(value2))); |
||||||
|
} |
||||||
|
|
||||||
|
public static BigDecimal multiply(float value1, float value2) { |
||||||
|
return new BigDecimal(Float.toString(value1)).multiply(new BigDecimal(Float.toString(value2))); |
||||||
|
} |
||||||
|
|
||||||
|
public static BigDecimal subtract(BigDecimal value1, float value2) { |
||||||
|
return value1.subtract(new BigDecimal(Float.toString(value2))); |
||||||
|
} |
||||||
|
|
||||||
|
public static BigDecimal subtract(float value1, float value2) { |
||||||
|
return new BigDecimal(Float.toString(value1)).subtract(new BigDecimal(Float.toString(value2))); |
||||||
|
} |
||||||
|
|
||||||
|
public static BigDecimal divide(BigDecimal dividend, BigDecimal divisor) { |
||||||
|
return dividend.divide(divisor, SCALE, BigDecimal.ROUND_HALF_UP); |
||||||
|
} |
||||||
|
|
||||||
|
public static BigDecimal divide(float dividend, BigDecimal divisor) { |
||||||
|
return new BigDecimal(Float.toString(dividend)).divide(divisor, SCALE, BigDecimal.ROUND_HALF_UP); |
||||||
|
} |
||||||
|
|
||||||
|
public static BigDecimal divide(BigDecimal dividend, float divisor) { |
||||||
|
return dividend.divide(new BigDecimal(Float.toString(divisor)), SCALE, BigDecimal.ROUND_HALF_UP); |
||||||
|
} |
||||||
|
|
||||||
|
public static BigDecimal divide(float dividend, float divisor) { |
||||||
|
return new BigDecimal(Float.toString(dividend)).divide(new BigDecimal(Float.toString(divisor)), SCALE, BigDecimal.ROUND_HALF_UP); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 提供精确的小数位四舍五入处理。 |
||||||
|
* |
||||||
|
* @param v 需要四舍五入的数字 |
||||||
|
* @return 四舍五入后的结果 |
||||||
|
*/ |
||||||
|
public static float round(float v) { |
||||||
|
BigDecimal b = new BigDecimal(Float.toString(v)); |
||||||
|
BigDecimal one = new BigDecimal("1"); |
||||||
|
return b.divide(one, SCALE, BigDecimal.ROUND_HALF_UP).floatValue(); |
||||||
|
} |
||||||
|
|
||||||
|
public static BigDecimal toBigDecimal(float price) { |
||||||
|
return new BigDecimal(String.valueOf(price)); |
||||||
|
} |
||||||
|
|
||||||
|
public static boolean isZero(float value) { |
||||||
|
return Float.compare(value, 0F) == 0; |
||||||
|
} |
||||||
|
|
||||||
|
public static boolean equals(float a, float b) { |
||||||
|
return Float.compare(a, b) == 0; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return a > b return true or false |
||||||
|
*/ |
||||||
|
public static boolean isGreaterThan(float a, float b) { |
||||||
|
return Float.compare(a, b) == 1; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return a >= b true or false |
||||||
|
*/ |
||||||
|
public static boolean isEqualsOrGreaterThan(float a, float b) { |
||||||
|
int compare = Float.compare(a, b); |
||||||
|
return compare != -1; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return true a < b or false |
||||||
|
*/ |
||||||
|
public static boolean isLessThan(float a, float b) { |
||||||
|
return Float.compare(a, b) == -1; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return a <= b true or false |
||||||
|
*/ |
||||||
|
public static boolean isEqualsOrLessThan(float a, float b) { |
||||||
|
int compare = Float.compare(a, b); |
||||||
|
return compare != 1; |
||||||
|
} |
||||||
|
|
||||||
|
} |
Loading…
Reference in new issue