首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >双值总是在十进制后返回00。

双值总是在十进制后返回00。
EN

Stack Overflow用户
提问于 2016-03-28 14:59:36
回答 3查看 490关注 0票数 0

我有一个方法可以得到任何应用程序的大小。但问题是,,我总是在十进制之后得到.00值.

假设应用程序的大小为3.44

因此,如果我调用我的方法,那么它将返回一个值3.00,并且对每个应用程序都是相同的。如果任何应用程序的大小小于1MB,那么我将得到0.00。请帮帮我。这是我的方法

代码语言:javascript
运行
复制
    private String getAppsSize() {
        File cApp;
        DecimalFormat cDFormat = new DecimalFormat("#.##");
        double appSizeInMegaBytes;
        String formattedText = null;
        try {
            cAInfo = cPManager.getApplicationInfo(getCurrentAppPackageName(), 0);
            cApp = new File(cAInfo.publicSourceDir);
            appSizeInMegaBytes = cApp.length() / 1048576;
            cDFormat.format(appSizeInMegaBytes);
            formattedText = Double.toString(appSizeInMegaBytes);
        }
 catch (PackageManager.NameNotFoundException e) {
            showToast("Failed to count app size!");
            e.printStackTrace();
        }
        return formattedText;
    }

在这里,我有一个方法getCurrentPackageName()。它不会造成任何错误。因为我在其他地方使用它。效果很好。所以,现在我不知道我的问题出在哪里..。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-28 15:09:46

您的问题是,cApp.length()返回一个long,然后将其除以另一个整数,这样就不会得到任何十进制位。试着用另一双除以代替。所以,就像:

代码语言:javascript
运行
复制
double megaByte = 1048576;
appSizeInMegaBytes = cApp.length() / megaByte;

仅向除数项中添加一个小数点也可以:appSizeInMegaBytes = cApp.length() / 1048576.0;

票数 0
EN

Stack Overflow用户

发布于 2016-03-28 15:13:50

我总是依赖于字符串的好的旧的隐式转换:

代码语言:javascript
运行
复制
            formattedText = ""+appSizeInMegaBytes;

这就是你将看到的价值是否好。

票数 0
EN

Stack Overflow用户

发布于 2016-03-28 15:39:37

您将在以下几行中抛出格式化的文本:

代码语言:javascript
运行
复制
cDFormat.format(appSizeInMegaBytes);
formattedText = Double.toString(appSizeInMegaBytes);

Format.format()调用将返回一个字符串,所以不要抛出它。试一试:

代码语言:javascript
运行
复制
 formattedText = cDFormat.format(appSizeInMegaBytes);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36264948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档