首页 > 解决方案 > 舍入多头并重新格式化

问题描述

我试图弄清楚如何重新格式化从 API 获得的长值。多头价值代表股票的市值,所以它自然而然地变化,但基本上我想要的是四舍五入和缩写。

我在这里找到了一个代码来缩写数字,具体取决于它的高度,但我不知道如何保留小数。

例如,如果我查询“NFLX”,我会返回“117173403648”。使用该代码,我将返回 117B。我希望输出是“117.17B”。

在缩写数字之前,我已经尝试过 Math.round() 函数,但它似乎没有按照我想要的方式工作,DecimalFormat 也没有。当然我都用错了。

这是我在 SO 上找到并修改的代码:

    public static String abbreviateNumber(long marketCap) {

        long temp = marketCap / 1000000000;
        if (temp > 0) {
            return temp + "B";
        }

        temp = marketCap / 1000000;
        if (temp > 0) {
            return temp + "M";
        }

        temp = marketCap / 1000;
        if (temp > 0) {
            return temp + "K";
        }

        return String.valueOf(marketCap);
    }

使用这个,marketCap 的输出是 117B,但我想要 2 个小数,并且仍然保留这个缩写方法。

谢谢,非常感谢任何帮助。我是编程新手,并且在我去的时候弄清楚了。

标签: java

解决方案


使用 DecimalFormat 和double

DecimalFormat format = new DecimalFormat("#0.00B");
long marketCap = 117173403648L;
double value = marketCap / 1000000000.0;
System.out.println(format.format(value));

117.17B


推荐阅读