Az előbbibe futottam bele:
---
C kód:
#include <stdio.h>
int main()
{
int i = 7;
int j = -4;
int k = i%j;
printf("%d\n",k);
return 0;
}
---
Lefuttava eredmény: 3 OK
Java kód:
---
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Integer i = 7;
Integer j = -4;
System.out.println(i%j);
}
}
---
Lefuttava eredmény: 3 OK
PHP:
---
<?php
$i=7;
$j=-4;
echo($i%$j);
?>
---
PHP dettó, 3 az eredmény.
Viszont!
Python kód:
---
i=7
j=-4
print str(i%j)
---
Lefuttatva eredmény: -1 !!!!
Illetve begépelve a Google keresősávjába: "7%-4"-et , majd Enter,
Szintúgy -1 lesz az eredmény !!!!
---
A kérdésem az, hogy ez miért lehet? Különbözik a Python/Google modulus számítási algoritmusa a többi nyelvtől?
Típusos/nem típusos probléma nem lehet, mivel a PHP is gyengén típusos nyelv, mégis ott jól jelenik meg, azaz 3.
Ha jól tudom, előjeles / float számoknál mindkét oldal abszolút értékével kell számolni, majd a bal oldal előjelétől függ az eredmény.
Akkor melyik eredmény a helyes, a C,Java,PHP vagy a Python/Google -é?
cryp
- 1055 megtekintés
Hozzászólások
Mindaketto jo, mert -1 kongruens 3 (mod -4)...
- A hozzászóláshoz be kell jelentkezni
Igen erre gondoltam elsőre énis, de a kérdés továbbra is fennáll:
Mi alapján dönti el a Python/Google hogy az ora bal oldalan levo (-1) értéket írja ki, nem pedig a jobb oldalan lévőt (3)?
cryp
- A hozzászóláshoz be kell jelentkezni
Egyébként a google python-t használ, szóval a python doksijat kell megnézni:
"The modulo operator always yields a result with the same sign as its second operand (or zero)."
http://en.wikipedia.org/wiki/Python_software#Commercial_uses
- A hozzászóláshoz be kell jelentkezni
keresgéltem a google-n de ezt nem találtam meg.
köszönöm.
cryp
- A hozzászóláshoz be kell jelentkezni
szerk: megeloztek
- A hozzászóláshoz be kell jelentkezni