Round: Unterschied zwischen den Versionen

Aus JACK Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
(Hinweise zum Runden)
 
(23 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Navigation/Rundungsfunktionen}}
===Zugehörige Evaluatoren===
*'''MathEvaluator'''
=== Beschreibung ===
=== Beschreibung ===
Die Funktion ''round'' rundet eine Gleitkommazahl zu einer Ganzzahl. Die Funktion erwartet eine Zahl und gibt die nächst gelegene Ganzzahl zurück.


Die Funktion ''round'' rundet eine Gleitkommazahl zu einer Ganzzahl. Die Funktion erwartet eine Zahl und gibt die nächst gelegene Ganzzahl zurück.
Alternativ kann die Funktion ''round'' eine Gleitkommazahl auf eine bestimmt Nachkommastelle runden. Das zweite optionale Argument gibt die Nachkommastelle an. 0 entspricht einem Aufruf ohne zweitem Parameter.
 
{{Hinweis|Die Funktion wendet das [https://de.wikipedia.org/wiki/Rundung#Symmetrisches_Runden symmetrische Runden] (''Round half to even'', auch bekannt als ''Banker’s Rounding'') an. Zahlen, die genau in der Mitte liegen, werden so gerundet, dass die letzte Ziffer gerade wird (siehe Beispiele). Für [https://de.wikipedia.org/wiki/Rundung#Kaufm%C3%A4nnisches_Runden kaufmännisches Runden] siehe [[RoundCommercial]].|Achtung}}


=== Syntax ===
=== Syntax ===
  round(float zahl)
  round([[Gleitkommazahl]] zahl, [ [[Ganzzahl]] index ])


=== Parameter ===
=== Parameter ===
* '''zahl''' - die zu rundene Zahl
* '''zahl''' - die zu rundene Zahl
* '''index''' - die Nachkommastelle - optional (default = 0)


=== Return Value ===
=== Return Value ===
*Gibt die gerundete Ganzzahl zurück
*Gibt die gerundete [[Ganzzahl]] zurück


=== Beispiele ===
=== Beispiele ===
==== Standardfälle ====
==== Standardfälle ====
  round(12.4)   --> returns 12
  round(12.4)     --> 12
  round(15.678)  --> returns 16
  round(15.678)    --> 16
round(15.678, 2) --> 15.68
round(3.21, 2)  --> 3.21
round(3.1, 0)    --> 3
round(27/4, 2)  --> 6.75
 
round(6.5)      --> 6    (symmetrisches Runden)
round(5.5)      --> 6    (symmetrisches Runden)
round(0.625, 2)  --> 0.62 (symmetrisches Runden)
round(0.635, 2)  --> 0.64
round(10:16, 2)  --> 0.62
round(10/16, 2)  --> 0.62
round(0.625, 1)  --> 0.6
round(0.625)    --> 1
round(0.555, 2)  --> 0.56


==== Benutzung mit Variablen ====
==== Benutzung mit Variablen ====
round([pos=1])
  round([var=a])
  round([var=a])
====JUnit Tests====
<span class="mw-customtoggle-myDivision">[Anzeigen]</span>
<syntaxhighlight lang="java" class="mw-collapsible mw-collapsed" id="mw-customcollapsible-myDivision">
@Before
public void beforeTest(){
  placeFillInVariable(4,OMParser.parse("3.5"));
  placeFillInVariable(93,OMParser.parse("93.49999"));
  placeExerciseVariable("a",OMParser.parse("3.5"));
  placeExerciseVariable("b",OMParser.parse("93.49999"));
}
@Test public void testRound(){
  assertTrue(6 == getEvaluator().getNumberResult("round(6.3)"));
  assertTrue(93 == getEvaluator().getNumberResult("round(93.49999)"));
  assertTrue(94 == getEvaluator().getNumberResult("round(93.50001)"));
  assertTrue(-93 == getEvaluator().getNumberResult("round(-93.49999)"));
  assertTrue(-94 == getEvaluator().getNumberResult("round(-93.50001)"));
   
   
  assertTrue(4 == getEvaluator().getNumberResult("round(3.5)"));
round([var=a], [var=b])
  assertTrue(3 == getEvaluator().getNumberResult("round(2.5)"));
}
 
@Test public void testRoundWithInput(){
  assertTrue(4 == getEvaluator().getNumberResult("round([pos=4])"));
  assertTrue(93 == getEvaluator().getNumberResult("round([pos=93])"));
}
 
@Test public void testRoundWithVariable(){
  assertTrue(4 == getEvaluator().getNumberResult("round([var=a])"));
  assertTrue(93 == getEvaluator().getNumberResult("round([var=b])"));
}
@Test
public void testRoundWithPointNumbers(){
  assertTrue(0 == getEvaluator().getNumberResult("round(.2)"));
  assertTrue(0 == getEvaluator().getNumberResult("round(-.2)"));
}
@Test
public void testRoundWithExpressions(){
  assertTrue(-2 == getEvaluator().getNumberResult("round(round(-2.2))"));
  assertTrue(2 == getEvaluator().getNumberResult("round(round(round(2.1)))"));
}
@Test(expected=InvalidEvaluatorFunctionArgumentException.class)
public void testRoundWithWrongInputCharacter(){
  getEvaluator().getNumberResult("round(a)");
}
 
@Test(expected=UnsupportedEvaluatorFunctionException.class)
public void testRoundWithTwoArguments(){
  getEvaluator().getNumberResult("round(1.2, 1.3)");
}
 
@Test(expected=UnsupportedEvaluatorFunctionException.class)
public void testRoundWithThreeArguments(){
  getEvaluator().getNumberResult("round(2.1, 2.2, 2.3)");
}


@Test(expected=UndefinedExerciseVariableException.class)
==== Benutzung mit studentischen Eingaben ====
public void testRoundWithMissingExerciseVariable(){
  getEvaluator().getNumberResult("round('[var=j]')");
}


@Test(expected=UndefinedFillInVariableException.class)
round([input=field1])
public void testRoundWithMissingInput(){
  getEvaluator().getNumberResult("round('[pos=42]')");
}
</syntaxhighlight>


=== Hinweise ===
=== Hinweise ===
* Die Funktion kann auch genutzt werden, um aus einem Bruch eine Dezimalzahl zu erzeugen.
* Weitere Funktionen zum Thema runden sind [[ceil]], [[floor]] und [[rint]].


[[Kategorie:Evaluatorfunktion]]
[[Kategorie:Math-Evaluatorfunktion]][[Kategorie:Operator]][[Kategorie:JACK2]][[Kategorie:JACK3]]

Aktuelle Version vom 19. Mai 2026, 12:17 Uhr

Rundungsfunktionen

Round • RoundCommercial • Rint • Ceil • Floor


Zugehörige Evaluatoren

  • MathEvaluator

Beschreibung

Die Funktion round rundet eine Gleitkommazahl zu einer Ganzzahl. Die Funktion erwartet eine Zahl und gibt die nächst gelegene Ganzzahl zurück.

Alternativ kann die Funktion round eine Gleitkommazahl auf eine bestimmt Nachkommastelle runden. Das zweite optionale Argument gibt die Nachkommastelle an. 0 entspricht einem Aufruf ohne zweitem Parameter.

Achtung: Die Funktion wendet das symmetrische Runden (Round half to even, auch bekannt als Banker’s Rounding) an. Zahlen, die genau in der Mitte liegen, werden so gerundet, dass die letzte Ziffer gerade wird (siehe Beispiele). Für kaufmännisches Runden siehe RoundCommercial.

Syntax

round(Gleitkommazahl zahl, [ Ganzzahl index ])

Parameter

  • zahl - die zu rundene Zahl
  • index - die Nachkommastelle - optional (default = 0)

Return Value

Beispiele

Standardfälle

round(12.4)      --> 12
round(15.678)    --> 16
round(15.678, 2) --> 15.68
round(3.21, 2)   --> 3.21
round(3.1, 0)    --> 3
round(27/4, 2)   --> 6.75
round(6.5)       --> 6    (symmetrisches Runden)
round(5.5)       --> 6    (symmetrisches Runden)
round(0.625, 2)  --> 0.62 (symmetrisches Runden)
round(0.635, 2)  --> 0.64
round(10:16, 2)  --> 0.62
round(10/16, 2)  --> 0.62
round(0.625, 1)  --> 0.6
round(0.625)     --> 1
round(0.555, 2)  --> 0.56

Benutzung mit Variablen

round([var=a])

round([var=a], [var=b])

Benutzung mit studentischen Eingaben

round([input=field1])

Hinweise

  • Die Funktion kann auch genutzt werden, um aus einem Bruch eine Dezimalzahl zu erzeugen.
  • Weitere Funktionen zum Thema runden sind ceil, floor und rint.