Member 13894581 Ответов: 1

Научные ошибки обозначения


Я сделал простой калькулятор на основе формул с помощью intelli j idea. он отлично работает с малыми числами,но когда я ввожу большие числа, он показывает 5.0E454 в качестве ответа.Как я могу устранить эту ошибку, чтобы получить идеальный числовой ответ?

Что я уже пробовал:

public void end(View v){
        EditText princi1;
        EditText annu1;
        EditText time1;
        EditText interest1;
        EditText comp1;
        TextView ans1;
        princi1=(EditText)findViewById(R.id.principal);
        annu1=(EditText)findViewById(R.id.annual);
        interest1=(EditText)findViewById(R.id.rate);
        comp1=(EditText)findViewById(R.id.compund);
        ans1=(TextView) findViewById(R.id.answer);
        time1=(EditText)findViewById(R.id.years);

        double p=Double.parseDouble(princi1.getText().toString());
        double an=Double.parseDouble(annu1.getText().toString());
        double r=Double.parseDouble(interest1.getText().toString());
        int co =Integer.parseInt(comp1.getText().toString());

        int t=Integer.parseInt(time1.getText().toString());
        double r2=r/100;

        for (int i = 1; i <= t; i++){
            p = (p * Math.pow(1 + r2 / co, co))+an;
        }
        ans1.setText(Double.toString(p));
    }

1 Ответов

Рейтинг:
9

OriginalGriff

Вероятно, потому, что такие числа, как 5.0E454-это очень большое число!
Подумайте об этом - если вы отображаете 5.0E454 как целое число, то это 5, за которым следуют 454 нуля:

50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Вам понадобится очень большой телефон, чтобы показывать такие номера!

Цитата:
я просто привел пример.
теперь в моей программе, если я возьму p=10 000 000
an=1000
r=10
co=1
t=10
вместо того, чтобы показывать 19 497 606,888
он показывает 1.949760688810001E7
Так приведите же нам примеры, которые действительно актуальны!

Существует несколько способов управления выходом:
import java.text.*;
public class Main
{
	public static void main(String[] args) {
	    double d = 19497606.888;
		System.out.println(Double.toString(d));
		System.out.println(String.format("%f", d));
        DecimalFormat decimalFormat = new DecimalFormat("#0");
		System.out.println(decimalFormat.format(d));
	}
}
Дать вам:
1.9497606888E7                                                                             
19497606.888000                                                                            
19497607 


OriginalGriff

Ответ обновлен.

CPallini

5.