计算单位转换 单位转换器在线转换器


BigDecimal , ROUND_UP的进位制java.math包中提供的API类BigDecimal , 对超过16位有效位的数进行精确的运算 。BigDecimal.ROUND_UP , 进位制:不管保留数字后面是大是小(0除外)都会进1 。
案例代码:
public class BigDecimalDemo {public static void main(String[] args) {BigDecimal numOne = new BigDecimal("3.14959267");BigDecimal numTwo = new BigDecimal("3.3205667");BigDecimal numThree = new BigDecimal("3.3005667");BigDecimal numOneRound = numOne.setScale(2, BigDecimal.ROUND_UP);System.out.println("numOneRound:" + numOneRound);// 3.15BigDecimal numTwoRound = numTwo.setScale(2, BigDecimal.ROUND_UP);System.out.println("numTwoRound:" + numTwoRound); // 3.33BigDecimal numThreeRound = numThree.setScale(2, BigDecimal.ROUND_UP);System.out.println("numThreeRound:" + numThreeRound); // 3.31}}参考:
商品单位的价格换算工具【计算单位转换 单位转换器在线转换器】之前的基础上 , 商品单位设定其中一种类型的价格 , 其他价格已同时设定 。
import java.math.BigDecimal;import java.util.LinkedHashMap;public class UnitPriceTools {/*** 设置一个单位的价格 , 自动生成所有的价格** @param unitGroupMap* @param unitType* @param unitPrice* @param model* @return*/public static LinkedHashMap toUnitPriceMapWithType(LinkedHashMap unitGroupMap, int unitType, BigDecimal unitPrice, int model) {LinkedHashMap unitPriceMap = new LinkedHashMap<>();if (unitType == 1) {// 单位类型1unitPriceMap.put(1, unitPrice.setScale(2));// 单位类型2BigDecimal unitPrice2 = unitPrice.multiply(new BigDecimal(unitGroupMap.get(2).getUnitValue())).setScale(2);unitPriceMap.put(2, unitPrice2);// 单位类型3BigDecimal unitPrice3 = unitPrice2.multiply(new BigDecimal(unitGroupMap.get(3).getUnitValue())).setScale(2);unitPriceMap.put(3, unitPrice3);// 单位类型4BigDecimal unitPrice4 = unitPrice3.multiply(new BigDecimal(unitGroupMap.get(4).getUnitValue())).setScale(2);unitPriceMap.put(4, unitPrice4);} else if (unitType == 2) {// 单位类型1BigDecimal unit1Price = unitPrice.divide(new BigDecimal(unitGroupMap.get(2).getUnitValue()));BigDecimal unit1RoundPrice = unit1Price.setScale(2, BigDecimal.ROUND_UP);if (model == 0) {unitPriceMap.put(11, unit1Price);unitPriceMap.put(1, unit1RoundPrice);} else {unitPriceMap.put(1, unit1RoundPrice);}// 单位类型2unitPriceMap.put(2, unitPrice.setScale(2));// 单位类型3BigDecimal unitPrice3 = unitPrice.multiply(new BigDecimal(unitGroupMap.get(3).getUnitValue())).setScale(2);unitPriceMap.put(3, unitPrice3);// 单位类型4BigDecimal unitPrice4 = unitPrice3.multiply(new BigDecimal(unitGroupMap.get(4).getUnitValue())).setScale(2);unitPriceMap.put(4, unitPrice4);} else if (unitType == 3) {// 单位类型2BigDecimal unit2Price = unitPrice.divide(new BigDecimal(unitGroupMap.get(3).getUnitValue()));BigDecimal unit2RoundPrice = unit2Price.setScale(2, BigDecimal.ROUND_UP);if (model == 0) {unitPriceMap.put(21, unit2Price);unitPriceMap.put(2, unit2RoundPrice);} else {unitPriceMap.put(2, unit2RoundPrice);}// 单位类型1BigDecimal unit1Price = unit2Price.divide(new BigDecimal(unitGroupMap.get(2).getUnitValue()));BigDecimal unit1RoundPrice = unit1Price.setScale(2, BigDecimal.ROUND_UP);if (model == 0) {unitPriceMap.put(11, unit1Price);unitPriceMap.put(1, unit1RoundPrice);} else {unitPriceMap.put(1, unit1RoundPrice);}// 单位类型3unitPriceMap.put(3, unitPrice.setScale(2));// 单位类型4BigDecimal unitPrice4 = unitPrice.multiply(new BigDecimal(unitGroupMap.get(4).getUnitValue())).setScale(2);unitPriceMap.put(4, unitPrice4);} else if (unitType == 4) {// 单位类型3BigDecimal unit3Price = unitPrice.divide(new BigDecimal(unitGroupMap.get(4).getUnitValue()));BigDecimal unit3RoundPrice = unit3Price.setScale(2, BigDecimal.ROUND_UP);if (model == 0) {unitPriceMap.put(31, unit3Price);unitPriceMap.put(3, unit3RoundPrice);} else {unitPriceMap.put(3, unit3RoundPrice);}// 单位类型2BigDecimal unit2Price = unit3Price.divide(new BigDecimal(unitGroupMap.get(3).getUnitValue()));BigDecimal unit2RoundPrice = unit2Price.setScale(2, BigDecimal.ROUND_UP);if (model == 0) {unitPriceMap.put(21, unit2Price);unitPriceMap.put(2, unit2RoundPrice);} else {unitPriceMap.put(2, unit2RoundPrice);}// 单位类型1BigDecimal unit1Price = unit2Price.divide(new BigDecimal(unitGroupMap.get(2).getUnitValue()));BigDecimal unit1RoundPrice = unit1Price.setScale(2, BigDecimal.ROUND_UP);if (model == 0) {unitPriceMap.put(11, unit1Price);unitPriceMap.put(1, unit1RoundPrice);} else {unitPriceMap.put(1, unit1RoundPrice);}// 单位类型4unitPriceMap.put(4, unitPrice.setScale(2));}return unitPriceMap;}/*** @param unitGroupMap* @param unitType* @param unitPrice* @return*/public static LinkedHashMap


特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。