21
Generale / Re:Divisione per interi ... una giungla
« Ultimo post da nomorelogic il Maggio 23, 2024, 01:27:54 pm »In effetti il risultato è emblematico.
L'operatore // in python (come si può vedere anche nel link sotto)
https://www.w3schools.com/python/trypython.asp?filename=demo_oper_floordiv
in realtà arrotonda il risultato all'intero più vicino.
Bene, però qualcosa non torna.
9/5, come dice bonmario fa 1.8
però mentre è corretto a questo punto che -9/5 dia come risultato -2, è errato che 9/5 dia come risultato 1! Dovrebbe dare 2.
Riguardo l'operatore div, secondo me il pascal risponde correttamente.
Ho voluto simulare quello che fa il python con Round (la Round del pascal arrotonda all'intero più vicino).
Infatti eseguendo il codice sotto, vedrete che i risultati sono esatti:
Direi che è chiaro che bisogna sapere che operazione si vuole svolgere, ma il python secondo me in questo caso non da risultati corretti.
Edit:
in effetti credo di aver preso una stecca
l'operatore // del python "rounds the result down to the nearest whole number"
che in effetti significa che arrotonda all'interno minore
quindi l'intero minore di 1.8 è 1
mentre l'intero minore di -1.8 è -2
l'inghippo è che non si tratta solo di una divisione ma di una divisione con un arrotondamento all'intero minore
che comunque sono due operazioni che in effetti vengono svolte correttamente
NB:
la Round del pascal arrotonda all'interno più vicino
L'operatore // in python (come si può vedere anche nel link sotto)
https://www.w3schools.com/python/trypython.asp?filename=demo_oper_floordiv
in realtà arrotonda il risultato all'intero più vicino.
Bene, però qualcosa non torna.
9/5, come dice bonmario fa 1.8
però mentre è corretto a questo punto che -9/5 dia come risultato -2, è errato che 9/5 dia come risultato 1! Dovrebbe dare 2.
Riguardo l'operatore div, secondo me il pascal risponde correttamente.
Ho voluto simulare quello che fa il python con Round (la Round del pascal arrotonda all'intero più vicino).
Infatti eseguendo il codice sotto, vedrete che i risultati sono esatti:
- Round(9/5) = 2
- Round(-9/5) = -2
Codice: [Seleziona]
program Hello;
var i, j: INT64;
begin
writeln ('a)', 9 div 5);
writeln ('b)', -9 div 5);
writeln ('c)', Round(9 / 5));
writeln ('d)', Round(-9 / 5));
end.
Direi che è chiaro che bisogna sapere che operazione si vuole svolgere, ma il python secondo me in questo caso non da risultati corretti.
Edit:
in effetti credo di aver preso una stecca
l'operatore // del python "rounds the result down to the nearest whole number"
che in effetti significa che arrotonda all'interno minore
quindi l'intero minore di 1.8 è 1
mentre l'intero minore di -1.8 è -2
l'inghippo è che non si tratta solo di una divisione ma di una divisione con un arrotondamento all'intero minore
che comunque sono due operazioni che in effetti vengono svolte correttamente
NB:
la Round del pascal arrotonda all'interno più vicino