【问题标题】:I have a question about percentage change in java我对java中的百分比变化有疑问
【发布时间】:2022-01-26 04:36:53
【问题描述】:

我需要找到不同数字的百分比变化,我已经把公式记下来了,但结果一直是负数而不是正数,例如100 到 150 的结果是 -50.00% 而不是 50.00%。提前致谢!

package package2;
import java.util.Scanner;

class Selection3 {

public static void main (String [] args)
{

    perChange();

    
}


public static void perChange() {
    double perCha0, perCha1, perCha2, perCha3, perCha4, perCha5;


    perCha0 = ((38 - 108)*100/38);
    perCha1 = ((35 - 63)*100/35);
    perCha2 = ((4 - 6)*100/4);
    perCha3 = ((3 - 5)*100/3);
    perCha4 = ((20 - 40)*100/20);
    perCha5 = ((100 - 150)*100/100);
    
    System.out.println(perCha0);
    System.out.println(perCha1);
    System.out.println(perCha2);
    System.out.println(perCha3);
    System.out.println(perCha4);
    System.out.println(perCha5);
    
}

输出

-184.0 -80.0 -50.0 -66.0 -100.0 -50.0

【问题讨论】:

    标签: java percentage


    【解决方案1】:

    您遇到的问题是一个数学问题,并且您在编程中编码了一个错误的公式。

    变化百分比是“变化差异”除以原始数量。当30项变成60项时,相差+30;但是,因为你以错误的顺序减去数字,你得到一个不正确的“差”-30。

    减法不像加法,改变数字的顺序不会得到相同的结果。

    【讨论】:

      【解决方案2】:

      你有一道数学题。例如在你的第一个公式中: 38 * 100 / 108 = 35.15%

      【讨论】:

        【解决方案3】:

        你基本上有3个选择:

        1. 使用 Math.abs()

          perCha0 = (Math.abs(38 - 108)*100/38);
          
          // or
          
          perCha0 = (Math.abs(x1 - x2)*100/x1);
          
        2. 否则条件

           if(x2 > x1)
               perCha0 = ((x2 - x1)*100/x1);
           else
               perCha0 = ((x1 - x2)*100/x1);
          
        3. 如果您之前知道您正在计算百分比增加,即 x2 > x1

           perCha0 = ((x2 - x1)*100/x1);
          

        如果你愿意,你也可以简化上面的。

        【讨论】:

          猜你喜欢
          • 2013-08-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多