【问题标题】:Double values to create percentage values on Textviews将值加倍以在 Textviews 上创建百分比值
【发布时间】:2014-08-28 12:17:29
【问题描述】:

我的代码来更新我的 Textviews。我想更新我的 textview 字符串之一以正确显示百分比。现在totalDouble 返回正确的值,但我不能乘或除该值。任何帮助表示赞赏。

private static Integer intNumberOfMaxGBsAccepted; 

protected void updateTheDailyandTotalUsageInformation(String string) {

    int daySelected = Integer.parseInt(string); //getting the day as a string

    //converting the series array to type Number
    Number dailyNumber = series2Numbers[daySelected-1]; 
    Number totalNumber = series1Numbers[daySelected-1];


    //converting the type Number to type Double
    Double dailyDouble =  (Double) dailyNumber;
    Double totalDouble = (Double) totalNumber;

    String dailyString = String.format("%.2f", dailyDouble);
    String totalString = String.format("%.2f", totalDouble);



    if(intNumberOfMaxGBsAccepted >=1) { 
        System.out.println(totalDouble);

        // **Inside this if statement I want to do
        // (totalDouble/intNumberOfMaxGBsAccepted) * 100
        // to create a percentage**

     // **I want to create something like this**
     // Double doublePercent = (totalDouble/(double)intNumberOfMaxGBsAccepted) *100;
     // String percent =  doublePercent+"%";
     //usagePlanPercentTextView.setText(percent);



    }

    dailyUsageTextView.setText(dailyString);
    totalUsageTextView.setText(totalString);    
}

谁能帮帮我?我是不是把我的数据类型转换错了?

【问题讨论】:

  • series1Numbersseries2Numbers 是如何定义的?它们是什么类型的?为什么您使用IntegerNumberDouble 而不仅仅是intdouble?您说您不能乘以或除以该值。当你尝试时会发生什么?你得到一个编译错误?运行时错误?如果是这样,你会得到什么错误?
  • 我想在这里回答 David 的问题——除了泛型之外,几乎没有理由使用 Integer 和 Double。而且我认为我以前从未见过 Number 使用过。
  • 嗨大卫,我更新了我的代码,当我尝试将“totalDouble”乘以任何值时,我得到了 NullPointerException 值。
  • 您的 System.out 打印的是什么?
  • 所以我的猜测是您的 intNumberOfMaxGBsAccepted 或 totalDouble 为空。然后,当您在某些计算中使用它时,自动装箱会创建一个空指针异常。更多理由使用 int 和 double 而不是 Integer 和 Double。

标签: java android double number-formatting


【解决方案1】:

尝试改用这个:

//converting the type Number to type double
double dailyDouble = dailyNumber.doubleValue();
double totalDouble = totalNumber.doubleValue();

现在您应该能够毫无困难地操作双精度值了。

如果您在调用doubleValue 时遇到空指针异常,那么您将知道数组中的值为空。您可能想要制作数组:

double[] series2Numbers = new double[ {arraysize} ];

使用值数组而不是对象数组,您将始终拥有一个值,而不是空指针。

【讨论】:

  • 这两行代码出现空指针异常。那是什么意思?我应该改变什么?
  • 非常感谢!!!我将所有内容都更改为 double 并将我的 seriesArray 从 Integer 初始化为 double 并且它有效!!!!谢谢 :) 我希望我有足够的声誉给你投赞成票。
【解决方案2】:

通过使用双精度值而不是数字,我能够更轻松地更新数组。

  //converting the type Number to type double
  double dailyDouble = dailyNumber.doubleValue();
  double totalDouble = totalNumber.doubleValue();


  double[] series2Numbers = new double[ {arraysize} ];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 2022-01-18
    • 2017-11-21
    • 2017-09-19
    相关资源
    最近更新 更多