Heim  >  Artikel  >  Java  >  Detaillierte Erklärung der wissenschaftlichen Java-Notation

Detaillierte Erklärung der wissenschaftlichen Java-Notation

高洛峰
高洛峰Original
2017-03-19 11:26:114123Durchsuche

Java Scientific Notation

1 Konzept der wissenschaftlichen Notation

1.1 Signifikante Zahlen

In einer ungefähren Zahl, beginnend mit der ersten Zahl links, die nicht 0 ist, Bis zur genauen Anzahl der Ziffern werden alle Zahlen dazwischen als signifikante Ziffern dieser ungefähren Zahl bezeichnet
Zum Beispiel:
890314000 behält drei signifikante Ziffern als 8,90×10 hoch 8 (gerundet)
839960000 Reserviert drei signifikante Ziffern als 8,40×10 hoch 8 (Fünf-Eintrag)
0,00934593 Reserviert drei signifikante Ziffern als 9,35×10 hoch -3

1,2 E-Notation

Die meisten Taschenrechner und Computerprogramme zeigen sehr große und sehr kleine Ergebnisse in wissenschaftlicher Notation an. Da die Darstellung hochgestellter Exponenten (z. B. 1011) auf dem Bildschirm unpraktisch ist, wird der Buchstabe E oder e normalerweise zur Darstellung einer Zehntelpotenz verwendet (geschrieben als „×10b“), und die Zahl nach dem E oder e ist der Exponent; Mit anderen Worten: Für zwei beliebige reelle Zahlen a und b (b sollte eine Ganzzahl sein) beträgt der durch „aEb“ dargestellte Wert a × 10b. Beachten Sie, dass der Buchstabe e in dieser Verwendung weder die mathematische Konstante e noch die Exponentenfunktion exp() ist (durch die Anzeige mit einem Großbuchstaben E können Missverständnisse besser vermieden werden). stellt einen Exponenten dar. Das Zeichen wird normalerweise als (wissenschaftliche Notation) E- oder e-Zeichen bezeichnet und nicht als Basiszeichen in Exponenten (obwohl letzteres auch vorkommt). Versuchen Sie, diese Anzeigemethode nicht in offiziellen Veröffentlichungen zu verwenden. Beachten Sie, dass e oder E in der wissenschaftlichen Notation nichts mit der mathematischen Konstante e oder der Funktion exp zu tun haben.
Diese Schreibweise ist auf die Unannehmlichkeiten beim Schreiben von Hochstellungen in manchen Computerprogrammen zurückzuführen. Diese Schreibweise sollte in offiziellen Veröffentlichungen nicht verwendet werden.
Die wissenschaftliche Notation in den nationalen Standards meines Landes wird in der Form a ×10b anstelle von aEb ausgedrückt (siehe GB3101-1993, GBT15835-2011, GBT8170-2008).


2 Wissenschaftliche Notation in Java

Wenn in Java der Wert von Double bestimmte Bedingungen erfüllt, wird er in wissenschaftlicher Notation angezeigt (das Folgende ist ein persönlicher Test. Das Ergebnis, nicht die Schlussfolgerung aus dem Dokument):

@Test
publicvoid testPrintScientificNotation(){
//整数部分位数大于等于8时开始以科学计数法显示
System.out.println(-12345678.0);
System.out.println(12345678.0);
//整数位为0,当小数位以0开始连续出现大于等于3时开始以科学计数法显示
System.out.println(0.0001);
System.out.println(-0.0001);
}
Ergebnis

  1. <span class="pun">-</span><span class="lit">1.2345678E7</span>

  2. <span class="lit">1.2345678E7</span>

  3. <span class="lit">1.0E-4</span>

  4. -<span class="lit">1.0E-4</span>

Oft müssen wir eine einheitliche, entweder alles in wissenschaftlicher Notation ausgegeben oder alles als normale Zählung angezeigt.

Laut Online-Informationen werden hauptsächlich drei
API-Implementierungsmethoden erwähnt: NumberFormat, DecimalFormat und BigDecimal.

2.1 NumberFormat

NumberFormat ist die abstrakte Basisklasse für alle numerischen Formate.

publicstaticString scientificNotation2String(Double d,int newValue){
String value =null;
NumberFormat nf =NumberFormat.getInstance();
// 设置此格式中不使用分组
   nf.setGroupingUsed(false);
// 设置数的小数部分所允许的最大位数。
   nf.setMaximumFractionDigits(newValue);
   value = nf.format(d);
return value;
}
Wenn die Anzahl der eingegebenen Dezimalstellen größer ist als die eingestellte maximale Anzahl an Dezimalstellen, wird gerundet.

2.2 DecimalFormat

DecimalFormat ist eine konkrete Unterklasse von NumberFormat, die zum Formatieren von Dezimalzahlen verwendet wird. Diese Klasse verfügt über verschiedene Funktionen, die es ihr ermöglichen, Zahlen in jedem Gebietsschema zu analysieren und zu formatieren, einschließlich der Unterstützung westlicher, arabischer und indischer Zahlen. Es unterstützt auch verschiedene Arten von Zahlen, einschließlich Ganzzahlen (123), Festkommazahlen (123,4), Zahlen in wissenschaftlicher Notation (1,23E4), Prozentsätze (12 %) und Beträge (123 $). Alle diese Inhalte können lokalisiert werden.

publicstaticString scientificNotation2String(Double d){
String value =null;
DecimalFormat decimalFormat =newDecimalFormat("0.00");//格式化设置  
       value = decimalFormat.format(d);
return value;
}
Sie müssen eine Vorlage einrichten und die Anzahl der zu behaltenden Dezimalstellen angeben. Wenn die Anzahl der Dezimalstellen im eingehenden Wert die angegebene Anzahl der Dezimalstellen überschreitet, wird er gerundet Wenn die Anzahl der Dezimalstellen im eingehenden Wert kleiner als die angegebene Anzahl von Dezimalstellen ist, können Sie die Auffüllung auf Null setzen.


Wenn Sie den Wert in wissenschaftliche Notation umwandeln müssen, müssen Sie nur die Vorlage ändern. Ändern Sie die Vorlage beispielsweise in: 0.##E0

2.3 BigDecimal

BigDecimal ist eine unveränderliche, vorzeichenbehaftete Dezimalzahl mit beliebiger Genauigkeit.

publicstaticString scientificNotation2String(String str){
String value =null;
BigDecimal bd =newBigDecimal(str);
       value = bd.toPlainString();
return value;
}
BigDecimal verfügt über viele

Konstruktormethoden und es ist nicht erforderlich, einen Wert vom Typ String zu übergeben. Der Unterschied zwischen der toString-Methode und der toPlanString-Methode in BigDecimal:

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung der wissenschaftlichen Java-Notation. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn