¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.common.utils; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | |
| | | /** |
| | | * ç²¾ç¡®çæµ®ç¹æ°è¿ç® |
| | | * |
| | | * @author ruoyi |
| | | */ |
| | | public class Arith |
| | | { |
| | | |
| | | /** é»è®¤é¤æ³è¿ç®ç²¾åº¦ */ |
| | | private static final int DEF_DIV_SCALE = 10; |
| | | |
| | | /** è¿ä¸ªç±»ä¸è½å®ä¾å */ |
| | | private Arith() |
| | | { |
| | | } |
| | | |
| | | /** |
| | | * æä¾ç²¾ç¡®çå æ³è¿ç®ã |
| | | * @param v1 è¢«å æ° |
| | | * @param v2 å æ° |
| | | * @return ä¸¤ä¸ªåæ°çå |
| | | */ |
| | | public static double add(double v1, double v2) |
| | | { |
| | | BigDecimal b1 = new BigDecimal(Double.toString(v1)); |
| | | BigDecimal b2 = new BigDecimal(Double.toString(v2)); |
| | | return b1.add(b2).doubleValue(); |
| | | } |
| | | |
| | | /** |
| | | * æä¾ç²¾ç¡®çåæ³è¿ç®ã |
| | | * @param v1 è¢«åæ° |
| | | * @param v2 åæ° |
| | | * @return ä¸¤ä¸ªåæ°çå·® |
| | | */ |
| | | public static double sub(double v1, double v2) |
| | | { |
| | | BigDecimal b1 = new BigDecimal(Double.toString(v1)); |
| | | BigDecimal b2 = new BigDecimal(Double.toString(v2)); |
| | | return b1.subtract(b2).doubleValue(); |
| | | } |
| | | |
| | | /** |
| | | * æä¾ç²¾ç¡®ç乿³è¿ç®ã |
| | | * @param v1 è¢«ä¹æ° |
| | | * @param v2 乿° |
| | | * @return ä¸¤ä¸ªåæ°ç积 |
| | | */ |
| | | public static double mul(double v1, double v2) |
| | | { |
| | | BigDecimal b1 = new BigDecimal(Double.toString(v1)); |
| | | BigDecimal b2 = new BigDecimal(Double.toString(v2)); |
| | | return b1.multiply(b2).doubleValue(); |
| | | } |
| | | |
| | | /** |
| | | * æä¾ï¼ç¸å¯¹ï¼ç²¾ç¡®ç餿³è¿ç®ï¼å½åçé¤ä¸å°½çæ
嵿¶ï¼ç²¾ç¡®å° |
| | | * å°æ°ç¹ä»¥å10ä½ï¼ä»¥åçæ°ååèäºå
¥ã |
| | | * @param v1 è¢«é¤æ° |
| | | * @param v2 餿° |
| | | * @return ä¸¤ä¸ªåæ°çå |
| | | */ |
| | | public static double div(double v1, double v2) |
| | | { |
| | | return div(v1, v2, DEF_DIV_SCALE); |
| | | } |
| | | |
| | | /** |
| | | * æä¾ï¼ç¸å¯¹ï¼ç²¾ç¡®ç餿³è¿ç®ãå½åçé¤ä¸å°½çæ
嵿¶ï¼ç±scaleåæ°æ |
| | | * å®ç²¾åº¦ï¼ä»¥åçæ°ååèäºå
¥ã |
| | | * @param v1 è¢«é¤æ° |
| | | * @param v2 餿° |
| | | * @param scale 表示表示éè¦ç²¾ç¡®å°å°æ°ç¹ä»¥åå ä½ã |
| | | * @return ä¸¤ä¸ªåæ°çå |
| | | */ |
| | | public static double div(double v1, double v2, int scale) |
| | | { |
| | | if (scale < 0) |
| | | { |
| | | throw new IllegalArgumentException( |
| | | "The scale must be a positive integer or zero"); |
| | | } |
| | | BigDecimal b1 = new BigDecimal(Double.toString(v1)); |
| | | BigDecimal b2 = new BigDecimal(Double.toString(v2)); |
| | | if (b1.compareTo(BigDecimal.ZERO) == 0) |
| | | { |
| | | return BigDecimal.ZERO.doubleValue(); |
| | | } |
| | | return b1.divide(b2, scale, RoundingMode.HALF_UP).doubleValue(); |
| | | } |
| | | |
| | | /** |
| | | * æä¾ç²¾ç¡®çå°æ°ä½åèäºå
¥å¤çã |
| | | * @param v éè¦åèäºå
¥çæ°å |
| | | * @param scale å°æ°ç¹åä¿çå ä½ |
| | | * @return åèäºå
¥åçç»æ |
| | | */ |
| | | public static double round(double v, int scale) |
| | | { |
| | | if (scale < 0) |
| | | { |
| | | throw new IllegalArgumentException( |
| | | "The scale must be a positive integer or zero"); |
| | | } |
| | | BigDecimal b = new BigDecimal(Double.toString(v)); |
| | | BigDecimal one = new BigDecimal("1"); |
| | | return b.divide(one, scale, RoundingMode.HALF_UP).doubleValue(); |
| | | } |
| | | } |