数字转换 千+、万+、k+、w+、9999w+

数字转换 千+、万+、k+、w+、9999w+

import java.math.BigDecimal;

import lombok.Data;
import lombok.extern.slf4j.Slf4j;

/**
 * 数字转换 千、万、k、w、9999w+
 * 
 * @author xysddjyt
 * @date 2019/11/08 16:34:27
 */
@Data
@Slf4j
public class RelativeNumberFormatTool {

    /**
     * 中文显示
     */
    public static final String CH = "CH";
    /**
     * 拼音显示
     */
    public static final String PY = "PY";

    private static final Long THOUSAND = 1000L;
    private static final Long TEN_THOUSAND = 10000L;
    private static final Long ONE_HUNDRED_MILLION = 100000000L;

    /**
     * 数据转换
     * 
     * @param num
     *            需要转换的数据 支持Long、BigDecimal、Integer、String、int、long类型
     * @param type
     *            需要转换的方式 RelativeNumberFormatTool.CH:中文显示 RelativeNumberFormatTool.PY:拼音显示
     * @return
     */
    public static String relativeNumberFormat(Object temp, String type) {
        Long num = numberFormat(temp);
        if (null == num) {
            return temp + "";
        }
        if (type.equals(PY)) {
            if (num.compareTo(ONE_HUNDRED_MILLION) == 1 || num.compareTo(ONE_HUNDRED_MILLION) == 0) {
                return "9999w+";
            }
            if (num.compareTo(TEN_THOUSAND) == 1 || num.compareTo(TEN_THOUSAND) == 0) {
                return num / TEN_THOUSAND + "w+";
            }
            if (num.compareTo(THOUSAND) == 1 || num.compareTo(THOUSAND) == 0) {
                return num / THOUSAND + "k+";
            }
        } else if (type.equals(CH)) {
            if (num.compareTo(ONE_HUNDRED_MILLION) == 1 || num.compareTo(ONE_HUNDRED_MILLION) == 0) {
                return "9999万+";
            }
            if (num.compareTo(TEN_THOUSAND) == 1 || num.compareTo(TEN_THOUSAND) == 0) {
                return num / TEN_THOUSAND + "万+";
            }
            if (num.compareTo(THOUSAND) == 1 || num.compareTo(THOUSAND) == 0) {
                return num / THOUSAND + "千+";
            }
        }
        return num + "";
    }

    /**
     * 格式化数据为Long类型
     */
    public static Long numberFormat(Object number) {
        if (number != null && !"".equals(number)) {
            if (number instanceof BigDecimal) {
                return ((BigDecimal)number).longValue();
            }
            if (number instanceof Integer) {
                return ((Integer)number).longValue();
            }
            if (number instanceof Long) {
                return (Long)number;
            }
            if (number instanceof String) {
                try {
                    return Long.valueOf(number + "");
                } catch (Exception e) {
                    log.info("字符串数字转换失败,请检查!" + e.getMessage(), e);
                }
            }
        }
        return null;
    }

    public static void main(String[] args) {
        BigDecimal a = new BigDecimal(103);
        int c = 8350;
        Integer c1 = 1000000;
        String str = "1000";
        long bb = 13544l;
        Long bb1 = 3624l;

        System.out.println(relativeNumberFormat(a, CH));
        System.out.println(relativeNumberFormat(c, CH));
        System.out.println(relativeNumberFormat(c1, CH));
        System.out.println(relativeNumberFormat(str, CH));
        System.out.println(relativeNumberFormat(bb, CH));
        System.out.println(relativeNumberFormat(bb1, CH));
        System.out.println(relativeNumberFormat(a, PY));
        System.out.println(relativeNumberFormat(c, PY));
        System.out.println(relativeNumberFormat(c1, PY));
        System.out.println(relativeNumberFormat(str, PY));
        System.out.println(relativeNumberFormat(bb, PY));
        System.out.println(relativeNumberFormat(bb1, PY));
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悬崖上的剁椒鱼头丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值