Próbuję portutować kawałek kodu z Pythona do PHP. Natknąłem się na linię, której nie rozumiem notacji.

secLat = 1./cos(lat)

Co robi operator W tym kontekście?

8
Matt Garrod 11 wrzesień 2012, 10:07

4 odpowiedzi

Najlepsza odpowiedź

Po prostu używają dziesiętnej, a następnie znak podziału, aby upewnić się, że wynik jest pływakami zamiast int. Pozwala to uniknąć problemów takich jak:

>>> 1/3
0
>>> 1./3
0.3333333333333333
17
Matthew Adams 11 wrzesień 2012, 06:09

Czytasz tak źle, boję się; jego:

(1.)/cos(lat)

Więc podziel wartość punktową 1.0 (z zerową pominiętą) przez cos() lat.

13
Martijn Pieters 11 wrzesień 2012, 06:09

Sprawia, że 1 wartość pływająca. Odpowiednik float(1)

Z dwoma liczbami całkowitymi / jest funkcją podłogi:

>>> 12/5
2

Z jednym argumentem float, / działa, jak się spodziewasz:

>>> 12.0/5
2.4
>>> 12/5.0
2.4 

Imho, wysłany kod jest mniej niejednoznaczny, jeśli jest napisany w ten sposób (w Pythonie)

secLat = 1.0/cos(lat)

Lub

secLat = float(1)/cos(lat)

Lub

secLat = 1/cos(lat)    

Ponieważ matematyka () zwraca pływaka, można użyć całkowitej liczby całkowitej.

Jeśli chcesz Pythona mieć "" podobny do Perl / PHP , robisz w ten sposób:

>>> from __future__ import division
>>> 1/2
0.5
4
the wolf 11 wrzesień 2012, 15:54

1. reprezentuje numer zmiennoprzecinkowy. / oznacza podział.

2
ie. 11 wrzesień 2012, 06:09