本文整理汇总了Java中java.math.BigDecimal.doubleValue方法的典型用法代码示例。如果您正苦于以下问题:Java BigDecimal.doubleValue方法的具体用法?Java BigDecimal.doubleValue怎么用?Java BigDecimal.doubleValue使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类java.math.BigDecimal
的用法示例。
在下文中一共展示了BigDecimal.doubleValue方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: parseObject
import java.math.BigDecimal; //导入方法依赖的package包/类
@Override
public Number parseObject(String source, ParsePosition pos) {
Number number = NumberFormat.getInstance().parse(source, pos);
if (number == null) {
return null;
}
String unit = source.substring(pos.getIndex()).trim();
Integer exponent = null;
if (!unit.isEmpty()) {
String prefix = unit.substring(0, 1);
exponent = PREFIX_MAP.get(prefix);
}
if (exponent != null && Double.isFinite(number.doubleValue())) {
BigDecimal bd = new BigDecimal(number.toString());
bd = bd.movePointRight(exponent.intValue());
if (bd.remainder(BigDecimal.ONE).equals(BigDecimal.ZERO) &&
bd.abs().compareTo(new BigDecimal(Long.MAX_VALUE)) < 0) {
return bd.longValue();
}
return bd.doubleValue();
}
return number;
}
示例2: calcCenterOfGravity
import java.math.BigDecimal; //导入方法依赖的package包/类
/**
* One dimensional: let coordinates x be with values v. center of gravity: cog = sum(x_i * v_i) / sum(v_i). If all
* values v_i are 0 then undefined. We can do this cog calculation for each dimension separately and combine the
* answers.
*
* @param picture
* in gray scale values. points are weighed in accordance with their gray scale. So double the gray scale
* means double weight. But beware: value 255=white, 0=black, so 255-value is in fact the weight of a pixel
* @return center of gravity (x,y), (undefined if picture is all white)
*/
public static double[] calcCenterOfGravity(int[][] picture) {
MathContext mc = MathContext.DECIMAL32;
BigDecimal zero = new BigDecimal(0, mc);
BigDecimal summedGrayScaleValues = zero;
BigDecimal summedRowGrayScaleValues = zero;
BigDecimal summedColumnGrayScaleValues = zero;
for (int rowIndex = 0; rowIndex < picture.length; rowIndex++) {
int[] row = picture[rowIndex];
for (int columnIndex = 0; columnIndex < row.length; columnIndex++) {
int grayScaleWeight = 255 - row[columnIndex];
if (grayScaleWeight > 0) {
summedRowGrayScaleValues = summedRowGrayScaleValues.add(BigDecimal.valueOf(grayScaleWeight * rowIndex), mc);
summedColumnGrayScaleValues = summedColumnGrayScaleValues.add(BigDecimal.valueOf(grayScaleWeight * columnIndex), mc);
summedGrayScaleValues = summedGrayScaleValues.add(BigDecimal.valueOf(grayScaleWeight), mc);
}
}
}
BigDecimal rowAverage = summedGrayScaleValues.longValue() > 0 ? summedRowGrayScaleValues.divide(summedGrayScaleValues, mc) : zero;
BigDecimal columnAverage = summedGrayScaleValues.longValue() > 0 ? summedColumnGrayScaleValues.divide(summedGrayScaleValues, mc) : zero;
double[] center = new double[] { rowAverage.doubleValue(), columnAverage.doubleValue() };
return center;
}
示例3: toDouble
import java.math.BigDecimal; //导入方法依赖的package包/类
public static double toDouble(Object a) {
double value;
if (a instanceof java.lang.Double) {
return ((Double) a).doubleValue();
} else if (a instanceof BigDecimal) {
BigDecimal bd = (BigDecimal) a;
value = bd.doubleValue();
int signum = bd.signum();
BigDecimal bdd = new BigDecimal(value + signum);
if (bdd.compareTo(bd) != signum) {
throw Error.error(ErrorCode.X_22003);
}
} else if (a instanceof Number) {
value = ((Number) a).doubleValue();
} else {
throw Error.error(ErrorCode.X_22501);
}
return value;
}
示例4: divide
import java.math.BigDecimal; //导入方法依赖的package包/类
/**
* 提供(相对)精确的除法运算。 当发生除不尽的情况时,由scale参数指定精度,以后的数字四舍五入。
*
* @param num1 被除数
* @param num2 除数
* @param scale 表示表示需要精确到小数点以后几位。
* @return 两个参数的商
*/
public static final Double divide(Object num1, Object num2, Integer scale) {
if (scale == null) {
scale = DEF_SCALE;
}
num2 = num2 == null || Math.abs(new Double(num2.toString())) == 0 ? 1 : num2;
if (scale < 0) {
throw new IllegalArgumentException("The scale must be a positive integer or zero");
}
BigDecimal result = bigDecimal(num1).divide(bigDecimal(num2), scale, BigDecimal.ROUND_HALF_UP);
return result.doubleValue();
}
示例5: round
import java.math.BigDecimal; //导入方法依赖的package包/类
public static double round(double value, int places) {
if (places < 0) throw new IllegalArgumentException();
BigDecimal bd = new BigDecimal(value);
bd = bd.setScale(places, RoundingMode.HALF_UP);
return bd.doubleValue();
}
示例6: analysisData
import java.math.BigDecimal; //导入方法依赖的package包/类
private List<GrpcnvokeStatistics> analysisData(Map<String, String> paramter) {
List<GrpcnvokeStatistics> statistics = invokeMapper.queryData(paramter);
for (Iterator<GrpcnvokeStatistics> it = statistics.iterator(); it.hasNext();) {
GrpcnvokeStatistics st = it.next();
int sumConsurrent = st.getSumConcurrent();
Double sumElapsed = st.getSumElapsed();
int sumSuccess = st.getSumSuccess();
int sumFailure = st.getSumFailure();
Double sumInput = st.getSumInput();
int totalCount = sumFailure + sumSuccess;
BigDecimal averageElapsed = BigDecimal.valueOf(sumElapsed).divide(BigDecimal.valueOf(totalCount), 2,
BigDecimal.ROUND_HALF_DOWN);
BigDecimal averageInput = BigDecimal.valueOf(sumInput).divide(BigDecimal.valueOf(totalCount), 2,
BigDecimal.ROUND_HALF_DOWN);
// TPS=并发数/平均响应时间
BigDecimal tps = new BigDecimal(sumConsurrent);
if (!(averageElapsed.doubleValue() == 0)) {
tps = tps.divide(averageElapsed, 2, BigDecimal.ROUND_HALF_DOWN);
tps = tps.multiply(BigDecimal.valueOf(1000));
st.setTps(tps.doubleValue());
} else {
st.setTps(Double.valueOf(0));
}
// kbps=tps*平均每次传输的数据量
BigDecimal kbps = new BigDecimal(st.getTps());
if (!(averageElapsed.doubleValue() == 0) && !(averageInput.doubleValue() == 0)) {
kbps = kbps.multiply(averageInput.divide(BigDecimal.valueOf(1024), 2, BigDecimal.ROUND_HALF_DOWN));
st.setKbps(kbps.doubleValue());
}
}
return statistics;
}
示例7: round
import java.math.BigDecimal; //导入方法依赖的package包/类
public static double round(double value, int places) {
if (places < 0) throw new IllegalArgumentException();
BigDecimal bd = new BigDecimal(value);
bd = bd.setScale(places, RoundingMode.HALF_UP);
return bd.doubleValue();
}
示例8: realizeCalculoFuturo1
import java.math.BigDecimal; //导入方法依赖的package包/类
private ResultadoCalculo realizeCalculoFuturo1() {
ResultadoCalculo result = new ResultadoCalculo();
double notaNecessaria = ((notaNecessariaTotal - ((nota1 * pesoB1) + (nota2 * pesoB2) + (nota3 * pesoB3))) / pesoB4);
double media = (((nota1 * pesoB1) + (nota2 * pesoB2) + (nota3 * pesoB3) + (0 * pesoB4)) / somaPesos);
BigDecimal mediaDecimal = new BigDecimal(media).setScale(1, RoundingMode.HALF_EVEN);
media = (zeroACem) ? Math.round(media) : mediaDecimal.doubleValue();
result.setMediaFinal(arredondaMedia(media));
if (arredondaMedia(media) >= mediaNecessaria) {
result.setSituacao("Aprovado");
result.setMensagem("Parabéns, você está aprovado!");
} else {
result.setSituacao("Cursando");
BigDecimal notaNecessariaDecimal = new BigDecimal(notaNecessaria).setScale(1, RoundingMode.HALF_EVEN);
int notaNecessariaInt = (int) Math.round(notaNecessaria);
if (zeroACem) {
result.setNotaNecessaria(notaNecessariaInt);
result.setMensagem("Você precisa de " + notaNecessariaInt + " no 4º Bimestre para ser aprovado.");
} else {
result.setNotaNecessaria(notaNecessariaDecimal.doubleValue());
result.setMensagem("Você precisa de " + notaNecessariaDecimal + " no 4º Bimestre para ser aprovado.");
}
}
return result;
}
示例9: subtract
import java.math.BigDecimal; //导入方法依赖的package包/类
/**
* 高精度的减法
*
* @author ZhengWei(HY)
* @createDate 2017-06-10
* @version v1.0
* v2.0 2018-01-04 支持不定多参
*
* @param i_Value01
* @param i_ValueX
* @return
*/
public final static double subtract(String i_Value01 ,String ... i_ValueX)
{
BigDecimal v_Ret = new BigDecimal(i_Value01.trim());
for (String v_ValueStr : i_ValueX)
{
BigDecimal v_Value = new BigDecimal(v_ValueStr.trim());
v_Ret = v_Ret.subtract(v_Value);
}
return v_Ret.doubleValue();
}
示例10: div
import java.math.BigDecimal; //导入方法依赖的package包/类
/**
* @param first 第一个参数
* @param second 第二个参数
* @return 除法
*/
public static Object div(Object first,Object second) {
BigDecimal a=Utils.toBigDecimal(first);
BigDecimal b=Utils.toBigDecimal(second);
BigDecimal c=a.divide(b,8,BigDecimal.ROUND_HALF_UP);
return c.doubleValue();
}
示例11: rd
import java.math.BigDecimal; //导入方法依赖的package包/类
private static double rd(double value, int places) {
if (places < 0)
throw new IllegalArgumentException();
BigDecimal bd = new BigDecimal(value);
bd = bd.setScale(places, RoundingMode.HALF_UP);
return bd.doubleValue();
}
示例12: getMonthlyExpenseRatio
import java.math.BigDecimal; //导入方法依赖的package包/类
public BigDecimal getMonthlyExpenseRatio(int month) {
BigDecimal monthlyBudget = getMonthlyBudget(month);
if (monthlyBudget.doubleValue() == 0) {
return Util.NewBig();
}
return getMonthlyExpense(month).divide(monthlyBudget, Util.ROUND_METHOD);
}
示例13: round
import java.math.BigDecimal; //导入方法依赖的package包/类
/**
* 四舍五入。
*
* 解决Java本身无法完全处理四舍五入的问题
*
* @param i_Value
* @param i_Digit 保留小数位数
* @return
* @see org.hy.common.xml.junit.JU_Round
*/
public final static double round(String i_Value ,int i_Digit)
{
BigDecimal v_Value = new BigDecimal(i_Value.trim());
if ( v_Value.compareTo(BigDecimal.ZERO) == 0 )
{
return 0D;
}
BigDecimal v_Pow = new BigDecimal(Math.pow(10d ,i_Digit));
BigDecimal v_Big = v_Value.multiply(v_Pow);
BigDecimal v_Small = new BigDecimal(Math.floor(v_Big.doubleValue()));
double v_Subtract = v_Big.subtract(v_Small).doubleValue();
if ( v_Subtract >= 0.5d )
{
v_Small = v_Small.add(new BigDecimal(1d));
}
v_Small = v_Small.divide(v_Pow);
return v_Small.doubleValue();
// 下面代码无法解决 4.015 四舍五入2位等于 4.02 的目标
// BigDecimal v_BigDecimal = new BigDecimal(String.valueOf(i_Value));
// return v_BigDecimal.setScale(i_Digit ,BigDecimal.ROUND_HALF_EVEN).doubleValue();
}
示例14: toDouble
import java.math.BigDecimal; //导入方法依赖的package包/类
private double toDouble(double d) {
BigDecimal b = toBigDecimal(d);
return b.doubleValue();
}
示例15: setReal
import java.math.BigDecimal; //导入方法依赖的package包/类
public static String setReal(double num, int decimals) {
BigDecimal bd = new BigDecimal(num);
bd = bd.setScale(decimals);
double db = bd.doubleValue();
return String.valueOf(db);
}