package com.ruoyi.common.utils;

public class NumberUtils {

    public static String formatNumber(Object input) {
        if (input == null) {
            return null;
        }

        // 处理整数类型，直接返回
        if (input instanceof Integer || input instanceof Long || input instanceof Short) {
            return String.valueOf(input);
        }

        // 处理浮点数类型
        if (input instanceof Float || input instanceof Double) {
            double value = ((Number) input).doubleValue();
            return formatDouble(value);
        }

        // 处理字符串类型
        if (input instanceof String) {
            try {
                double value = Double.parseDouble((String) input);
                return formatDouble(value);
            } catch (NumberFormatException e) {
                // 解析失败，返回原字符串
                return (String) input;
            }
        }

        // 其他类型，直接返回字符串形式
        return input.toString();
    }

    private static String formatDouble(double value) {
        // 判断是否为整数（即小数部分为0）
        if (value == Math.floor(value)) {
            return String.valueOf((long) value);
        }
        return String.format("%.2f", value);
    }

    public static void main(String[] args) {
        System.out.println(formatNumber(123));           // 输出 123
        System.out.println(formatNumber(123.456));       // 输出 123.46
        System.out.println(formatNumber(123.4f));        // 输出 123.40
        System.out.println(formatNumber("123.456"));     // 输出 123.46
        System.out.println(formatNumber("123.00"));      // 输出 123
        System.out.println(formatNumber(123.0));         // 输出 123
        System.out.println(formatNumber(123.00f));       // 输出 123
        System.out.println(formatNumber("abc"));         // 输出 abc
    }

}
