Integer -> Runden?

flashray

Erfahrenes Mitglied
Hallo,

bspw. im unteren Code ist die Ausgabe 5. Kann mir jemand verraten wie der VB-Compiler hier genau rundet?

Ist das so richtig? Stimmen die Intervalle?
x.0 < x.a <= x.5 -> x.a wird abgerundet also Ergebnis gleich x
x.5 < x.b < x+1 -> x.b wird aufgerundet also Ergebnis gleich x+1


Code:
Module Aufgabe2_1B
	Sub Main()
		Dim X As Integer
		Dim Y As Integer
		X = 1
		Y = 10
		X = (X + Y) \ 2
		System.Console.WriteLine(X)
	End Sub
End Module


Vg Erdal
 
Moin!
Ja ausprobieren wäre doch ne Maßnahme. Oder man schaut mal in die Doku:
Die Division ganzer Zahlen erfolgt mit dem \-Operator. Bei der Division ganzer Zahlen wird der Quotient zurückgegeben, also die ganze Zahl, die angibt, wie oft der Dividend durch den Divisor ohne Rest geteilt werden kann. Für diesen Operator müssen Divisor und Dividend einen ganzzahligen Datentyp (SByte, Byte, Short, UShort, Integer, UInteger, Long und ULong) aufweisen. Alle anderen Typen müssen zuerst in einen ganzzahligen Typ konvertiert werden. Im folgenden Beispiel wird die Division ganzer Zahlen veranschaulicht.


*grüssle*
MeinerEiner
 
Hallo MeinerEiner,

danke für den Link.

Werde voraussichtlich in ca. einer Woche ein "VB"-Tutorium übernehmen. Programmiertechnisch ist das im allgemeinen kein Problem. Aber die Feinheiten muss ich mir halt noch erarbeiten. Ja die Doku wird mir auf jeden Fall weiterhelfen.


Vg Erdal
 
Hallo suye,

habe auch deinen Vorschlag aufgegriffen:

Code:
Module Aufgabe2_1A
	Sub Main()
		Dim A As Integer
		Dim B As Integer
		Dim X As Integer
		Dim Y As Integer
		A = 4.1
		B = 8.9
		System.Console.WriteLine("A=" & A & " B=" & B)
		A = 4.2
		B = 8.8
		System.Console.WriteLine("A=" & A & " B=" & B)
		A = 4.3
		B = 8.7
		System.Console.WriteLine("A=" & A & " B=" & B)
		A = 4.4
		B = 8.6
		System.Console.WriteLine("A=" & A & " B=" & B)
		A = 4.45
		B = 8.55
		System.Console.WriteLine("A=" & A & " B=" & B)
		
		A = 10
		B = 3
		X = A / B
		Y = A \ B
		System.Console.WriteLine("X=" & X & " Y=" & Y)
		A = 10
		B = 4
		X = A / B
		Y = A \ B
		System.Console.WriteLine("X=" & X & " Y=" & Y)
		A = 10
		B = 6
		X = A / B
		Y = A \ B
		System.Console.WriteLine("X=" & X & " Y=" & Y)
		A = 10
		B = 7
		X = A / B
		Y = A \ B
		System.Console.WriteLine("X=" & X & " Y=" & Y)
	End Sub
End Module

Code:
A=4 B=9
A=4 B=9
A=4 B=9
A=4 B=9
A=4 B=9
X=3 Y=3
X=2 Y=2
X=2 Y=1
X=1 Y=1

Fazit:

implizite Konvertierung -> abrunden bis einschließlich .5
/ -> abrunden bis einschließlich .5
\ -> abschneiden der Nachkommastellen


Vg Erdal
 
Zurück