【问题标题】:Android - Double value always returns 00 after decimalAndroid - 双精度值总是在小数点后返回 00
【发布时间】:2016-03-28 14:59:36
【问题描述】:

我有一种方法可以获取任何应用程序的大小。但问题是 我总是得到小数点后 .00 的值。

假设,一个应用的大小是 3.44

所以,如果我调用我的方法,那么它将返回值 3.00 而且,每个应用程序都是一样的。如果任何应用程序的大小小于 1 mb,那么我得到 0.00。请帮我。这是我的方法

    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()。它不会导致错误。因为我在其他地方使用它。它工作正常。所以,现在我不知道我的问题出在哪里了……

【问题讨论】:

    标签: java android string double package-managers


    【解决方案1】:

    您的问题是 cApp.length() 返回 long,然后您将其除以另一个整数,因此您不会以这种方式获得任何小数位。尝试除以另一个双倍。所以像:

    double megaByte = 1048576;
    appSizeInMegaBytes = cApp.length() / megaByte;
    

    只需将小数添加到除数上也应该可以: appSizeInMegaBytes = cApp.length() / 1048576.0;

    【讨论】:

    • 好的,它正在工作。但是,我在小数点后得到了很多价值。现在,如果我调用该方法,那么我得到 3.0256983(示例)。但是,我只想要小数点后的最后两位数
    【解决方案2】:

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

                formattedText = ""+appSizeInMegaBytes;
    

    这就是你会看到价值是否好的方式。

    【讨论】:

      【解决方案3】:

      您在这些行中丢弃了您的格式化文本:

      cDFormat.format(appSizeInMegaBytes);
      formattedText = Double.toString(appSizeInMegaBytes);
      

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

       formattedText = cDFormat.format(appSizeInMegaBytes);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-27
        • 2019-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多