Gehele deling in Java

Dit lijkt een domme vraag, maar ik kan het antwoord nergens in de Java-documentatie vinden. Als ik twee ints declareer en ze vervolgens deel, wat gebeurt er dan precies? Worden ze eerst geconverteerd naar floats/doubles, gedeeld en vervolgens teruggegooid naar een integer, of wordt de deling “gedaan” als gehele getallen?

Ook puur uit experimenten lijkt het delen van gehele getallen het antwoord naar nul af te ronden (d.w.z. 3/2 = 1en -3/2 = -1). Heb ik gelijk als ik dit geloof?


Antwoord 1, autoriteit 100%

Ze worden verdeeld in gehele rekenkunde. Dus door integer ate delen door integer b, krijg je hoeveel keer bin apast. Ook a % bgeeft je een restant van een deling. Dus (a / b ) * b + a % b = a


Antwoord 2, autoriteit 39%

Java doet autoconvert-typen:

“Het converteert automatisch ints naar doubles. Het converteert automatisch shorts en bytes naar ints, zelfs als er geen ints bij betrokken zijn, en vereist constant irritante casts als je korte of byte rekenkunde wilt doen. Het zet primitieven automatisch om in wrappers en vice versa voor boksen en autoboxen .” – gebruiker2357112

Java nooitcast iets zonder dat je het opgeeft.

Maar toch integer / integer = integer.

Ook wordt het resultaat altijd afgekapt. Dus als het resultaat 0,999999 zou zijn als float, zou de gehele deling nog steeds 0 opleveren.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

five × 2 =

Other episodes