Heim >Java >javaLernprogramm >Beispielcode für Java-Rundung und reservierte Bits

Beispielcode für Java-Rundung und reservierte Bits

黄舟
黄舟Original
2017-08-22 09:56:471306Durchsuche

In diesem Artikel werden hauptsächlich Beispiele für Rundungen und reservierte Bits in Java vorgestellt. Der Herausgeber findet ihn recht gut, daher werde ich ihn jetzt mit Ihnen teilen und als Referenz verwenden. Folgen wir dem Editor und werfen wir einen Blick darauf

Das Runden ist ein mathematisches Problem in unserer Grundschule. Für uns Programmierer ist dieses Problem so einfach wie Addition, Subtraktion, Multiplikation und Division von 1 bis 10. Bevor wir es erklären, werfen wir einen Blick auf den folgenden klassischen Fall:


public static void main(String[] args) { 
    System.out.println("12.5的四舍五入值:" + Math.round(12.5)); 
    System.out.println("-12.5的四舍五入值:" + Math.round(-12.5)); 
  }

Ausgabe:

Der Rundungswert von 12,5: 13

-Der Rundungswert von 12,5: -12

Dies ist ein klassischer Fall von Rundung, und das kommt auch bei uns häufig vor Begegnung bei der Teilnahme an der Rekrutierung von Schulen (Es scheint, dass ich darauf oft gestoßen bin, als ich die schriftliche Prüfung abgelegt habe). Aus den Ergebnissen hier stellen wir fest, dass diese beiden Zahlen den gleichen absoluten Wert haben. Warum sind die Näherungswerte unterschiedlich? Tatsächlich wird dies durch die von Math.round übernommenen Rundungsregeln bestimmt.

Rundungen werden im Finanzwesen tatsächlich häufig verwendet, insbesondere bei Bankzinsen. Wir alle wissen, dass der Hauptgewinnkanal einer Bank die Zinsdifferenz ist. Sie sammelt Gelder von den Einlegern und verleiht sie dann. Die in diesem Zeitraum erzielte Zinsdifferenz ist der von der Bank erzielte Gewinn. Wenn wir die üblichen Rundungsregeln übernehmen, verwenden wir hier die Berechnung der Zinsen für jeweils 10 Einlagen als Modell, wie folgt:

Rundung: 0,000, 0,001, 0,002, 0,003, 0,004. All das ist Geld, das die Bank verdient.

Fünf Einträge: 0,005, 0,006, 0,007, 0,008, 0,009. Dies sind die Geldverluste der Bank: 0,005, 0,004, 0,003, 0,002, 0,001.

Für die Bank sollte ihr Gewinn also 0,000 + 0,001 + 0,002 + 0,003 + 0,004 - 0,005 - 0,004 - 0,003 - 0,002 - 0,001 = -0,005 betragen. Aus den Ergebnissen geht hervor, dass die Bank pro 10 Zinszahlungen 0,005 Yuan verlieren kann. Unterschätzen Sie diese Zahl nicht. Das ist ein sehr großer Verlust für die Bank. Angesichts dieses Problems wurde die folgende Methode zur Bankbeteiligung entwickelt. Dieser Algorithmus wurde von amerikanischen Bankern vorgeschlagen und wird hauptsächlich zur Korrektur von Fehlern verwendet, die durch die oben genannten Rundungsregeln verursacht werden. Wie folgt:

Wenn der Wert der Rundungsziffer kleiner als 5 ist, wird direkt gerundet.

Wenn der Wert der Rundungsziffer größer als 5 ist, wird er nach dem Runden gerundet.

Wenn der Wert der Rundungsziffer gleich 5 ist und nach 5 andere Werte ungleich 0 vorhanden sind, wird nach dem Tragen gerundet. Wenn nach 5 eine 0 steht, wird sie gerundet basiert auf der Nummer der Ziffer vor 5. Die Beurteilung basiert auf der Parität, ungerade Zahlen werden aufgerundet und gerade Zahlen werden verworfen.

Für die oben genannten Regeln geben wir ein Beispiel

  • 11,556 = 11,56 ------Sechs Einträge

  • 11,554 = 11,55 -----Vier Runden

  • 11,5551 = 11,56 -----Fünf Runden mit Carry

  • 11,545 = 11,54 -----Die Zahl nach fünf ist unzählig. Wenn die erste Ziffer eine gerade Zahl ist, sollte sie verworfen werden

  • 11,555 = 11,56 -----Die Zahl danach fünf ist unzählig, wenn die erste Ziffer eine ungerade Zahl ist, sollte sie übertragen werden

Das folgende Beispiel verwendet die Bankrundungsmethode:


 public static void main(String[] args) { 
    BigDecimal d = new BigDecimal(100000);   //存款 
    BigDecimal r = new BigDecimal(0.001875*3);  //利息 
    BigDecimal i = d.multiply(r).setScale(2,RoundingMode.HALF_EVEN);   //使用银行家算法  
     
    System.out.println("季利息是:"+i); 
    }

Ausgabe:

Der vierteljährliche Zins beträgt: 562,50

Die Banker-Rundungsmethode wird oben kurz vorgestellt. Derzeit unterstützt Java 7 Rundungen Methoden:

1. ROUND_UP: Abrunden von Null. Beim Runden auf den maximalen Absolutwert wird es übertragen, solange das Verwerfungsbit nicht 0 ist.

2. ROUND_DOWN: Aufrunden gegen Null. Bei Eingabe in die Richtung mit dem kleinsten Absolutwert werden alle Bits verworfen und es erfolgt kein Übertrag.

3. ROUND_CEILING: Rundung in Richtung positive Unendlichkeit. Nähern Sie sich der positiven Maximalrichtung. Wenn es sich um eine positive Zahl handelt, ähnelt das Rundungsverhalten ROUND_UP. Wenn es sich um eine negative Zahl handelt, ähnelt das Rundungsverhalten ROUND_DOWN. Die Methode Math.round() verwendet dieses Muster.

4. ROUND_FLOOR: Rundung in Richtung negative Unendlichkeit. Nähern Sie sich der negativen Unendlichkeit. Wenn es eine positive Zahl ist, ist das Rundungsverhalten ähnlich wie bei ROUND_DOWN; wenn es eine negative Zahl ist, ist das Rundungsverhalten ähnlich wie bei ROUND_UP.

5. HALF_UP: Die nächste Zahl wird gerundet (5-stellige Rundung). Dies ist unsere klassischste Zusammenfassung.

6. HALF_DOWN: Die nächste Zahl wird gerundet (5 Rundung). Hier ist 5 zu verwerfen.

7. HAIL_EVEN: Banker-Rundungsmethode.

Wenn es um das Runden geht, sind reservierte Bits unerlässlich. In Java-Operationen können wir verschiedene Methoden verwenden, um reservierte Bits zu implementieren.

Reservierte Bits

Methode 1: Rundung


double  f  =  111231.5585; 
BigDecimal  b  =  new  BigDecimal(f); 
double  f1  =  b.setScale(2,  RoundingMode.HALF_UP).doubleValue();

Verwenden Sie hier BigDecimal und verwenden Sie die setScale-Methode, um die Genauigkeit festzulegen, und verwenden Sie RoundingMode.HALF_UP, um anzugeben, dass die Rundungsregel für die nächste Zahl verwendet wird, um die Berechnung anzunähern. Hier können wir sehen, dass BigDecimal und Rundung perfekt zusammenpassen.
Methode 2:


java.text.DecimalFormat  df  =new  java.text.DecimalFormat(”#.00″); 
df.format(你要格式化的数字);

Beispiel: new java.text.DecimalFormat(”#.00″).format(3.1415926)

#.00 Stellt zwei Dezimalstellen dar, #.0000, vier Dezimalstellen und so weiter...

Methode 3:


double d = 3.1415926; 
 
String result = String .format(”%.2f”);

%.2f % stellt eine beliebige Anzahl von Stellen vor dem Komma dar. 2 stellt das Ergebnis nach zwei Dezimalstellen dar. Format f steht für den Gleitkommatyp.

Methode 4:

Wenn Sie außerdem das Struts-Tag für die Ausgabe verwenden, gibt es ein Formatattribut, das auf format=" gesetzt ist 0,00", um zwei Dezimalstellen beizubehalten

例如: 


<bean:write name="entity" property="dkhAFSumPl" format="0.00" /> 
//或者 
<fmt:formatNumber type="number" value="${10000.22/100}" maxFractionDigits="0"/>

maxFractionDigits表示保留的位数 

Das obige ist der detaillierte Inhalt vonBeispielcode für Java-Rundung und reservierte Bits. 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