Dlaczego dzielenie np 2/3 = 0

0

Cześć, mam dzisiaj taki problem. Chcę w skrypcie podzielić dwie liczby np a = 2 / 3 i chcę wyświetlić wartość, to zamiast otrzymać liczbę po przecinku to otrzymuję 0. Czy jest możliwość zresetowania środowiska, albo naprawienia tego problemu?

3

W pytonie masz dwa rodzaje dzielenia: dla liczb/cyfr całkowitych oraz zmiennoprzecinkowych. W Twoim przypadku obie cyfry są całkowite więc będzie wybrane dzielenie całkowite. Żebyś miał wynik przecinkowy to musisz jedną z cyfr zamienić na zmiennoprzecinkową np poprzez dodanie .0 na końcu czyli a = 2.0 / 3

Edit: Źródło: https://technikinformatyk.pl/kursy/kurs/python/lekcja/python-operatory-arytmetyczne/

2

@adrian95: Tak dziala dzielenie w pytonie na intach - wynik zaokraglany jest w dol Jeśli chcesz wartość typu rzeczywistego to:

a = 2.0/3
1

@GutekSan: Prędzej część po przecinku jest usuwana a nie zaokrąglana. Drobna różnica a jednak ;)

3

Nie pisz niczego nowego w Pythonie 2, ten język jest już martwy. Python 3 ma w tym momencie prawie dwanaście lat, było naprawdę dużo czasu, żeby się przesiąść…

I Python 3 ma domyślnie właśnie dzielenie zmiennoprzecinkowe, zatem:

>>> 2/3
0.6666666666666666
>>> 2//3
0
3

@PerlMonk:
Masz rację w tym że faktycznie jest różnica. Tyle, że w Pytonie 2 jest właśnie zaokrąglanie w dół, a nie obcinanie wartości po przecinku.

> 2/3
0
> 2.0/3
0.666666666667
> -2.0/3
-0.666666666667
> -2/3
-1

Gdyby było obcinanie wartości po przecinku, to ostatni wynik byłby -0, a nie -1.

1 użytkowników online, w tym zalogowanych: 0, gości: 1