如何将2k,1m,1g等转换为2000,1000000等

时间:2017-06-19 10:10:03

标签: java android

您好我是java新手可以帮助我吗?

此代码转换 2000至2k和1000000 1m等

22.12.1985

我需要一个代码来反转转换,例如 2k到2000和1m到1000000

4 个答案:

答案 0 :(得分:1)

我只是通过在转换之前将值存储在ArrayList中来获得解决方案,并且它工作了osum。感谢大家的帮助:)。

答案 1 :(得分:0)

我已经发布了一个解决方案。需要适当的输入,因为不包括正确的验证。如果符合您的需要,请告诉我。您也可以根据需要添加/修改开关盒。

public class Test {
    public static void main(String[] args) {
        String values[] = {
                "27",
                "999",
                "1.0 k",
                "110.6 k",
                "29.0 G",
                "5m",
                "5m30",
                "2.7k",
                "2k7",
                "2k17",
                "9.2 E",
                "9.2EE"
        };
        Test test = new Test();
        test.printValues(values);
    }

    private void printValues(String[] values) {
        for (String value : values) {
            if (isProperNumber(value)) {
                printValue(value);
            } else {
                System.out.println("Not a proper number");
            }
            System.out.println("===================");
        }
    }

    private void printValue(String value) {
        String lastAlphabet = value.replaceAll("[^a-zA-Z]*$", "")
                                   .replaceAll(".(?!$)", "");
        long multiplier = 1L;

        switch (lastAlphabet.toLowerCase()) {
            case "k":
                multiplier = 1_000L;
                break;
            case "m":
                multiplier = 1_000_000L;
                break;
            case "g":
                multiplier = 1_000_000_000L;
                break;
            case "t":
                multiplier = 1_000_000_000_000L;
                break;
            case "p":
                multiplier = 1_000_000_000_000_000L;
                break;
            case "e":
                multiplier = 1_000_000_000_000_000_000L;
                break;
            default:
                break;
        }

        String[] values = value.split(lastAlphabet);

        if (multiplier == 1) {
            System.out.println("" + values[0]);
        } else {

            double valueMultiplier = Double.parseDouble(values[0]);
            double valueAdder;
            try {
                valueAdder = Double.parseDouble(values[1]);
            } catch (ArrayIndexOutOfBoundsException ex) {
                valueAdder = 0.0d;
            }
            double total = (valueMultiplier * multiplier) + valueAdder;
            System.out.printf("%.0f\n", total);
        }
    }

    private boolean isProperNumber(String value) {
        value = value.replaceAll("\\s+", "");
        String count = value.replaceAll("[.0-9]+", "");
        return count.length() < 2;
    }
}

答案 2 :(得分:0)

不用担心,只需使用简单的JS技巧,将Round数舍入到小数点后2位。

function somefunction(count){
    if (count >= 1000) {
        return Math.round((count/1000) * 10)/10+'k';
    } else {
        return count;
    }
}

如果您想添加更多功能,那么如果将1000分配给百万或十亿,则添加更多其他功能,如果使您的代码更好,则仅添加2或3个其他内容即可。

答案 3 :(得分:-1)

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:bottom="50dp"
        android:left="50dp"
        android:right="50dp"
        android:top="50dp">
        <rotate android:fromDegrees="45">
            <shape>
                <size
                    android:width="200dp"
                    android:height="200dp"/>
                <stroke
                    android:width="10dp"
                    android:color="#358165"/>
                <solid android:color="#69BE9E"/>
            </shape>
        </rotate>
    </item>
</layer-list>