Divisionsgenauigkeit

Status
Nicht offen für weitere Antworten.

Cola_Colin

Top Contributor
In Java gibt es meines Wissens nach nur den / Operator zum dividieren.
Der versucht dann anhand der beteiligten Typen zu bestimmen, wie genau gerechnet werden soll. Das klappt aber bei mir nicht soo toll.
Gesetzt der Fall ich habe zwei Integer, diese dividiere ich. Ich will ein Ergebnis des Types float haben.
Wenn ich floatVar = int1 / int2; schreibe, dann wird das ganze gerundet.
Um das zu verhindern muss ich int2 casten ?!
Also floatVar = int1 / (float) int2;

Wie ist die Musterlösung für diesen Fall ? Diese andauernden Casts verwirren mich.
 

eRaaaa

Top Contributor
jepp,ginge vllt noch etwas kürzer als der cast, aber von allein geht da nix ;(
[c]floatVar = 1f*int1 / int2;[/c]
 

Cola_Colin

Top Contributor
Das ist ärgerlich :'(
Eine weitere Sache mit den Casts... Wenn ich eine Procedure in Delphi hatte die einen float erwartet hat, dann konnte ich der durchaus auch einfach einen double geben. Das klappt in Java auch nicht ohne Cast.
Da Kommawerte die Im Quellcode direkt stehen als double gewertet werden ist auch das teilweise nervig.
Ich fürchte das kann man auch nicht umgehen ?
 

Landei

Top Contributor
Das klappt aber bei mir nicht soo toll.

Die Operatoren sind so definiert, dass der gleiche Typ rauskommt, wie man reinsteckt - eigentlich ganz logisch. Außerdem ist der ganzzahlige / Operator sehr wichtig, denn er ist sozusagen das "Gegenstück" zu %. Es gilt:
(a / b) * b + (a % b) == a
Damit lassen sich viele Problemchen lösen (z.B. wie man eine zweidimensionale Matrix in ein eindimensionales Array stopfen kann)
 
Status
Nicht offen für weitere Antworten.

Oben