最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實現(xiàn)單位換算功能

 更新時間:2022年01月19日 10:01:35   作者:昵稱要騷  
這篇文章主要為大家詳細介紹了Java實現(xiàn)單位換算功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Java實現(xiàn)單位換算功能的具體代碼,供大家參考,具體內(nèi)容如下

使用枚舉進行簡單計算

只加入了一些簡單常用的單位,如有需要自行添加,以標準單位為基準

package com.dessert.common.enu;

import org.apache.commons.lang3.StringUtils;
import java.math.BigDecimal;

public class UnitConversion {

? ? /**
? ? ?* 默認保留兩位小數(shù),四舍五入
? ? ?*
? ? ?* @param value ? ?原始數(shù)值
? ? ?* @param original 原始單位
? ? ?* @param need ? ? 轉(zhuǎn)換的單位
? ? ?* @return
? ? ?*/
? ? public static BigDecimal conversion(BigDecimal value, UnitsEnum original, UnitsEnum need) {
? ? ? ? return conversion(value, original, need, 2);
? ? }

? ? /**
? ? ?* @param value ? ?原始數(shù)值
? ? ?* @param original 原始單位
? ? ?* @param need ? ? 轉(zhuǎn)換的單位
? ? ?* @param scale ? ?小數(shù)點位數(shù)
? ? ?* @return
? ? ?*/
? ? public static BigDecimal conversion(BigDecimal value, UnitsEnum original, UnitsEnum need, int scale) {
? ? ? ? if (original == UnitsEnum.UN_KNOWN || need == UnitsEnum.UN_KNOWN) {
? ? ? ? ? ? throw new IllegalArgumentException("存在不支持的單位參數(shù)");
? ? ? ? }
? ? ? ? if (original.category != need.category) {
? ? ? ? ? ? throw new IllegalArgumentException("轉(zhuǎn)換單位不統(tǒng)一!" + original.category.name + "不能轉(zhuǎn)換為" + need.category.name);
? ? ? ? }
? ? ? ? return value == null ? new BigDecimal(0) : value.multiply(need.rate).divide(original.rate, scale, BigDecimal.ROUND_HALF_UP);
? ? }


? ? /**
? ? ?* 默認保留兩位小數(shù),四舍五入
? ? ?*
? ? ?* @param value ? ?原始數(shù)值
? ? ?* @param original 原始單位
? ? ?* @param need ? ? 轉(zhuǎn)換的單位
? ? ?* @return
? ? ?*/
? ? public static BigDecimal conversion(BigDecimal value, String original, String need) {
? ? ? ? return conversion(value, getUnitEnum(original), getUnitEnum(need));
? ? }

? ? public static UnitsEnum getUnitEnum(String unit) {
? ? ? ? if (StringUtils.isNotEmpty(unit)) {
? ? ? ? ? ? for (UnitsEnum unitEnum : UnitsEnum.values()) {
? ? ? ? ? ? ? ? for (String possibleName : unitEnum.possibleNames) {
? ? ? ? ? ? ? ? ? ? if (possibleName.equals(unit.toLowerCase())) {
? ? ? ? ? ? ? ? ? ? ? ? return unitEnum;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return UnitsEnum.UN_KNOWN;
? ? }


? ? public enum UnitsEnum {

? ? ? ? LG_KM(CategoryEnum.LENGTH, "km", new String[]{"km", "千米"}, new BigDecimal("0.001"), "千米"),
? ? ? ? LG_M(CategoryEnum.LENGTH, "m", new String[]{"m", "米"}, new BigDecimal("1"), "米"),
? ? ? ? LG_Dm(CategoryEnum.LENGTH, "dm", new String[]{"dm", "分米"}, new BigDecimal("10"), "分米"),
? ? ? ? LG_CM(CategoryEnum.LENGTH, "cm", new String[]{"cm", "厘米"}, new BigDecimal("100"), "厘米"),
? ? ? ? LG_MM(CategoryEnum.LENGTH, "mm", new String[]{"mm", "毫米"}, new BigDecimal("1000"), "毫米"),
? ? ? ? LG_UM(CategoryEnum.LENGTH, "um", new String[]{"um", "微米"}, new BigDecimal("1000000"), "微米"),
? ? ? ? LG_NM(CategoryEnum.LENGTH, "nm", new String[]{"nm", "納米"}, new BigDecimal("1000000000"), "納米"),
? ? ? ? LG_INCH(CategoryEnum.LENGTH, "inch", new String[]{"in", "inch", "英寸"}, new BigDecimal("39.3700787"), "英寸"),

? ? ? ? EG_T(CategoryEnum.WEIGHT, "t", new String[]{"t", "噸"}, new BigDecimal("0.001"), "噸"),
? ? ? ? EG_KG(CategoryEnum.WEIGHT, "kg", new String[]{"kg", "千克"}, new BigDecimal("1"), "千克"),
? ? ? ? EG_G(CategoryEnum.WEIGHT, "g", new String[]{"g", "克"}, new BigDecimal("1000"), "克"),
? ? ? ? EG_MG(CategoryEnum.WEIGHT, "mg", new String[]{"mg", "毫克"}, new BigDecimal("1000000"), "毫克"),
? ? ? ? EG_UG(CategoryEnum.WEIGHT, "μg", new String[]{"μg", "ug", "微克"}, new BigDecimal("1000000000"), "微克"),
? ? ? ? EG_LB(CategoryEnum.WEIGHT, "lb", new String[]{"lb", "lbs", "磅"}, new BigDecimal("2.2046226"), "磅"),
? ? ? ? EG_OZ(CategoryEnum.WEIGHT, "oz", new String[]{"oz", "盎司"}, new BigDecimal("35.2739619"), "盎司"),
? ? ? ? EG_CT(CategoryEnum.WEIGHT, "ct", new String[]{"ct", "克拉"}, new BigDecimal("5000"), "克拉"),

? ? ? ? UN_KNOWN(null, "未知", null, new BigDecimal("0"), "未知");

? ? ? ? private CategoryEnum category;
? ? ? ? private String units;
? ? ? ? private String[] possibleNames;
? ? ? ? private BigDecimal rate;
? ? ? ? private String description;

? ? ? ? UnitsEnum(CategoryEnum category, String units, String[] possibleNames, BigDecimal rate, String description) {
? ? ? ? ? ? this.category = category;
? ? ? ? ? ? this.units = units;
? ? ? ? ? ? this.possibleNames = possibleNames;
? ? ? ? ? ? this.rate = rate;
? ? ? ? ? ? this.description = description;
? ? ? ? }

? ? ? ? public CategoryEnum getCategory() {
? ? ? ? ? ? return category;
? ? ? ? }

? ? ? ? public String getUnits() {
? ? ? ? ? ? return units;
? ? ? ? }

? ? ? ? public String[] getPossibleNames() {
? ? ? ? ? ? return possibleNames;
? ? ? ? }

? ? ? ? public BigDecimal getRate() {
? ? ? ? ? ? return rate;
? ? ? ? }

? ? ? ? public String getDescription() {
? ? ? ? ? ? return description;
? ? ? ? }


? ? ? ? private enum CategoryEnum {

? ? ? ? ? ? LENGTH("length", UnitsEnum.LG_M, "長度"),
? ? ? ? ? ? WEIGHT("weight", UnitsEnum.EG_KG, "重量");

? ? ? ? ? ? private String name;
? ? ? ? ? ? private UnitsEnum base;
? ? ? ? ? ? private String description;

? ? ? ? ? ? CategoryEnum(String name, UnitsEnum base, String description) {
? ? ? ? ? ? ? ? this.name = name;
? ? ? ? ? ? ? ? this.base = base;
? ? ? ? ? ? ? ? this.description = description;
? ? ? ? ? ? }

? ? ? ? ? ? public String getName() {
? ? ? ? ? ? ? ? return name;
? ? ? ? ? ? }

? ? ? ? ? ? public UnitsEnum getBase() {
? ? ? ? ? ? ? ? return base;
? ? ? ? ? ? }

? ? ? ? ? ? public String getDescription() {
? ? ? ? ? ? ? ? return description;
? ? ? ? ? ? }
? ? ? ? }

? ? }

}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot中的@DependsOn注解詳解

    SpringBoot中的@DependsOn注解詳解

    這篇文章主要介紹了SpringBoot中的@DependsOn注解詳解,
    2023-08-08
  • Redis緩存策略超詳細講解

    Redis緩存策略超詳細講解

    實際開發(fā)中緩存處理是必須的,不可能我們每次客戶端去請求一次服務(wù)器,服務(wù)器每次都要去數(shù)據(jù)庫中進行查找,為什么要使用緩存?說到底是為了提高系統(tǒng)的運行速度
    2022-09-09
  • 501 Command "HELO" requires an argument問題的解決方法

    501 Command "HELO" requires an argument問題的解決方法

    換一個windows服務(wù)器,發(fā)現(xiàn)就沒這樣的問題,僅在一臺Linux服務(wù)器上可以重現(xiàn),直觀感覺就是這臺Linux服務(wù)器某些配置有問題
    2013-08-08
  • Java實現(xiàn)JDBC向數(shù)據(jù)庫批量插入

    Java實現(xiàn)JDBC向數(shù)據(jù)庫批量插入

    在Java項目中可能會出現(xiàn)大量向數(shù)據(jù)庫中插入的情況,本文主要介紹了Java實現(xiàn)JDBC向數(shù)據(jù)庫批量插入,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • java實現(xiàn)簡單的英文文本單詞翻譯器功能示例

    java實現(xiàn)簡單的英文文本單詞翻譯器功能示例

    這篇文章主要介紹了java實現(xiàn)簡單的英文文本單詞翻譯器功能,涉及java文件讀取、字符串分割、遍歷、判斷等相關(guān)操作技巧,需要的朋友可以參考下
    2017-10-10
  • springboot+nginx+https+linux實現(xiàn)負載均衡加域名訪問簡單測試

    springboot+nginx+https+linux實現(xiàn)負載均衡加域名訪問簡單測試

    這篇文章主要介紹了springboot+nginx+https+linux實現(xiàn)負載均衡加域名訪問簡單測試,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-05-05
  • Java 3種方法實現(xiàn)進制轉(zhuǎn)換

    Java 3種方法實現(xiàn)進制轉(zhuǎn)換

    這篇文章主要介紹了Java 3種方法實現(xiàn)進制轉(zhuǎn)換,幫助大家利用Java處理數(shù)據(jù),感興趣的朋友可以了解下
    2020-09-09
  • Mybatis分頁插件PageHelper的分頁原理剖析

    Mybatis分頁插件PageHelper的分頁原理剖析

    這篇文章主要介紹了Mybatis分頁插件PageHelper的分頁原理剖析,PageHelper作為一個啟動器,那么就和其他啟動器加載一樣,先讀取spring.factories文件里面配置的類,轉(zhuǎn)成Bean加載本系統(tǒng)中,然后執(zhí)行他的前置后置處理方法,完成初始化,需要的朋友可以參考下
    2023-08-08
  • jdk21下載、安裝詳細教程(Windows、Linux、macOS)

    jdk21下載、安裝詳細教程(Windows、Linux、macOS)

    本文介紹了OpenJDK 21的下載地址和安裝步驟,包括Windows、Linux和macOS平臺,下載后解壓并設(shè)置環(huán)境變量,最后驗證安裝,感興趣的朋友一起看看吧
    2025-03-03
  • Mybatis緩存機制詳解與實例分析

    Mybatis緩存機制詳解與實例分析

    Mybatis的緩存分為一級緩存和二級緩存,一級緩存是SqlSession級別的而二級緩存是mapper級別的,本文詳細的介紹了Mybatis緩存機制與實例分析,文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下
    2023-11-11

最新評論

工布江达县| 保德县| 兴国县| 北票市| 余姚市| 马山县| 金阳县| 松阳县| 宜宾县| 张家川| 黔西县| 石河子市| 新巴尔虎右旗| 手游| 二连浩特市| 塔城市| 本溪市| 南漳县| 汕尾市| 绿春县| 张北县| 普格县| 闽清县| 岳西县| 池州市| 黄石市| 涿州市| 清水县| 中方县| 秦安县| 吉安市| 堆龙德庆县| 枣阳市| 股票| 剑阁县| 确山县| 两当县| 罗田县| 金寨县| 吐鲁番市| 开鲁县|