C:\Users\>Daniel>node > var a = 10; undefined > var b=3; undefined > a/b 3.3333333333333335
Javascript, intern, are doar singur tip de reprezentare a numerelor, 64-bit virgula mobila, acelasi cu double din c#.
Python în schimb suportă și tipul integer. Rezultatul împărțirii a doua numere întregi în Python 2.7 este întotdeauna un număr întreg:
In [1]: a = 10 In [2]: b = 3 In [3]: a/b Out[3]: 3
Pentru a pentru a obține rezultatul corect trebuie sa convertim unul din operatori la tipul float.
In [5]: a/float(b) Out[5]: 3.3333333333333335
Python 3 nu are această problemă, rezultatul împărțirii în astfel de cazuri fiind un număr real (true division).
Putem folosi și în Python2.7 operația de diviziune din Python 3 cu un import din
__future__
:In [1]: from __future__ import division In [2]: a = 10 In [3]: b = 3 In [4]: a/b Out[4]: 3.33333333333333355
În C#, rezultatul împărțirii a doua numere întregi este tot un număr întreg, rezultat care nu ridică întrebări având în vedere faptul ca limbajul este static.
1 2 3 4 | int a = 10; int b = 3; Console.WriteLine(a/b); // prints 3 |
Result: 3
REFERENCES:
- Python 2.7 Documentation, https://docs.python.org/2.7/library/stdtypes.html#numeric-types-int-float-long-complex
- Python 3.4 Documentation, https://docs.python.org/3.4/library/stdtypes.html#numeric-types-int-float-complex
- MDN, Numbers, https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Numbers_and_dates
- How can I force division to be floating point in Python? http://stackoverflow.com/questions/1267869/how-can-i-force-division-to-be-floating-point-in-python
- Learning Python de Mark Lutz. Capitolul 5, Numeric Types
- Javascript: the Good Parts de Douglas Crockford. Capitolul 2. Grammar
- C# 5.0 in a Nutshell de Joe Albahari, capitolul 2 Numeric Types