Frage

Nach Wikipedia beim Runden einer negativen Zahl, die Sie Runden die absolute Zahl.So durch, dass die Argumentation, -3.5 wäre, gerundet auf -4.Aber wenn ich java.lang.Math.Runde(-3.5) gibt -3.Kann mir bitte jemand erklären?

War es hilfreich?

Lösung

Nach dem javadoc

  

Gibt die nächste lange die   Streit. Das Ergebnis wird an einen abgerundeten   Ganzzahl um 1/2 Zusatz, wobei die   Boden des Ergebnisses, und Gießen der   Ergebnis lange tippen. Mit anderen Worten,   das Ergebnis ist gleich dem Wert von   der Ausdruck:

     

(long)Math.floor(a + 0.5d)

Konzeptionell Sie rund bis . Mit anderen Worten, auf die nächste ganze Zahl größer als der Wert und -3 größer als -3,5, während -4 weniger ist.

Andere Tipps

Es gibt eine Vielzahl von Methoden der Rundung;die, die Sie suchen, heißt Symmetrische Arithmetische Rundung (wie es heißt).Der Abschnitt, auf die Sie sich beziehen states:"Diese Variante tritt Häufig in mathematischen Anwendungen, zum Beispiel in der Buchhaltung.Es ist eine allgemein gelehrt in der elementaren Mathematik Klassen." Dies scheint zu bestätigen, dass es ist nicht eine Regel, die weltweit vereinbart, nur die eine, die ist die meisten gemeinsame.

Persönlich, ich erinnere mich nicht, jemals gelehrt, dass die Regel in der Schule.Mein Verständnis der Rundung ist immer, dass .5 wird aufgerundet, unabhängig von den Vorzeichen der Zahl.Offenbar die Autoren von Java das gleiche Verständnis haben.Dies ist Asymmetrisch, Arithmetische Rundung.

Verschiedene tools und Sprachen möglicherweise verwenden unterschiedliche Rundung Schemas.Excel-offenbar nutzt der symmetrischen Methode.

(Insgesamt, würde ich raten, dass, wenn Sie finden ein Konflikt zwischen Wikipedia und der Erfahrung, die Sie suchen Informationen an anderer Stelle.Wikipedia ist nicht perfekt.)

Für was es Wert ist, java.math.BigDecimal hat wählbare Modi Rundung, wenn Sie brauchen mehr Kontrolle über die Art von Sache.

Sie Wikipedia-Artikel zitieren nicht sagen, das ist der einzige Weg, runden, nur der gemeinsame Weg zu runden. Auch in diesem Artikel erwähnt sind mehrere Alternativen (leider von denen keine Java Rundungsmethode beschreiben - auch wenn sie es nennen, wie „Asymmetric Arithmetik Rounding“, wenn angibt, was JavaScript tut)

.

Sie müssen entscheiden, wie Sie wollen Ihre Zahlen gerundet, dann diese Methode verwenden. Wenn Java-Implementierung übereinstimmt, dann groß. ansonsten müssen Sie es auf eigene Faust implementieren.

Nach Javadocs:

Gibt den nächsten long auf das Argument. Das Ergebnis wird durch Zugabe von 1/2 auf eine ganze Zahl gerundet, den Boden des Ergebnisses machen, und Gießen die Folge long einzugeben. Mit anderen Worten, ist das Ergebnis mit dem Wert des Ausdrucks gleich:      

(long)Math.floor(a + 0.5d)

Es stellte sich heraus die Konvention abzurunden ist. Ich denke, Wikipedia fehlbar ist. Stellt sich heraus, Microsoft haben es falsch, obwohl, wie sie es abzurunden auch bis -4, was nicht Konvention ist (ich mit jemandem, der einen Doktortitel in Mathematik hat geprüft).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top