我在这里遇到了一个问题,当我计算一个超过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));
}
}
如果您正在处理一些非常大的值,我建议您使用BigInteger
。您可以使用它,如下所示
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());
很抱歉这是我的错,但现在我不得不修复它,我只需要将initial_investment从int更改为长
initial_investment = Long.parseLong( Text1.getText().toString());