Java Can';Don’不要把30亿以上的数字计算在内

Java Can';Don’不要把30亿以上的数字计算在内,java,android,eclipse,android-studio,Java,Android,Eclipse,Android Studio,我这里有一个问题,当我计算一个超过20亿的数字时,30亿总是错误的,并且显示力接近。那么我需要做什么来修复它呢 long initial_investment, total_investment; DecimalFormat df = new DecimalFormat ("###,###,###,###"); initial_investment = Integer.parseInt( Text1.getText().toString()); if (initial_investmen

我这里有一个问题,当我计算一个超过20亿的数字时,30亿总是错误的,并且显示力接近。那么我需要做什么来修复它呢

long  initial_investment, total_investment;
 DecimalFormat df = new DecimalFormat ("###,###,###,###");
initial_investment = Integer.parseInt( Text1.getText().toString());


if (initial_investment <= 1000000000)
                 {

                     total_investment = ((initial_investment * 3) /100)+ total_investment;
                     Text5.setText(df.format(total_investment));

                 }
                 else if (initial_investment > 1000000000 && initial_investment <= 3000000000L )
                 {

                     total_investment = (long) (((initial_investment* 2.5) /100)+ total_investment);
                     Text5.setText(df.format(total_investment));

                 }
                 else if (initial_investment > 3000000000L )
                        {

                        total_investment = ((initial_investment * 2) /100)+ total_investment;
                        Text5.setText(df.format(total_investment));

                        }

            }
长期初始投资,总投资;
DecimalFormat df=新的DecimalFormat(“#####,###,##,##,#”);
initial_investment=Integer.parseInt(Text1.getText().toString());
if(初始投资100000000和初始投资30000000000L)
{
总投资=(初始投资*2)/100)+总投资;
Text5.setText(df.format(总投资));
}
}

如果您正在处理一些非常大的价值,我建议您使用。您可以使用它,如下所示

BigInteger bi1, bi2, bi3;  

// assign values to bi1, bi2
bi1 = new BigInteger("123");
bi2 = new BigInteger("50");

// perform add operation on bi1 using bi2
bi3 = bi1.add(bi2);

String str = "Result of addition is " +bi3;

你可以这样做

initial_investment= Long.parseLong( Text1.getText().toString());
而不是

initial_investment = Integer.parseInt( Text1.getText().toString());

对不起,这是我的错,但现在我必须修复它,我只需要将初始投资从int改为long

initial_investment = Long.parseLong( Text1.getText().toString());

初始投资是一个整数吗?整数不能超过21.4亿。这个例子没有显示初始投资是整数还是长的…@matthew初始投资是长的关于
总投资
?什么是
df
,十进制格式?引号“123”和“50”是什么意思?@RickyAN BigInteger将数字作为string@intboolstring方法parseInt(String)对于类型BigInteger是未定义的当构造函数本身可以将
String
转换为
BigInteger
时,为什么需要
parseInt
类型的方法?如果这对您有帮助,您可以接受它作为正确答案;)