2.2. Type Float

2.2.1. Definition

>>> data = 1.337
>>> data = +1.337
>>> data = -1.337

2.2.2. Notation

  • Without leading or trailing zero

  • Used by numpy

    >>> data = 69.
    >>> print(data)
    69.0
    >>> data = .44
    >>> print(data)
    0.44
    

Scientific and engineering notation

>>> million = 1e6
>>> print(million)
1000000.0
>>> million = 1E6
>>> print(million)
1000000.0
>>> 1e6
1000000.0
>>> +1e6
1000000.0
>>> -1e6
-1000000.0
>>> 1e-3
0.001
>>> 1e-4
0.0001
>>> 1e-5
1e-05
>>> 1e-6
1e-06
>>> -1e-3
-0.001
>>> -1e-4
-0.0001
>>> 1.337 * 1e3
1337.0
>>> 1.337 * 1e-3
0.001337

2.2.3. Type Casting

Builtin function float() converts argument to float

>>> float(1)
1.0
>>> float(+1)
1.0
>>> float(-1)
-1.0
>>> float(1.337)
1.337
>>> float(+1.337)
1.337
>>> float(-1.337)
-1.337
>>> float('1.337')
1.337
>>> float('+1.337')
1.337
>>> float('-1.337')
-1.337
>>> float('1,337')
Traceback (most recent call last):
ValueError: could not convert string to float: '1,337'
>>> float('+1,337')
Traceback (most recent call last):
ValueError: could not convert string to float: '+1,337'
>>> float('-1,337')
Traceback (most recent call last):
ValueError: could not convert string to float: '-1,337'

2.2.4. Round Number

Rounding a number

>>> pi = 3.14159265359
>>>
>>> round(pi, 4)
3.1416
>>> round(pi, 2)
3.14
>>> round(pi)
3

Rounding a number in string formatting

>>> pi = 3.14159265359
>>>
>>> print(f'Pi number is {pi}')
Pi number is 3.14159265359
>>> print(f'Pi number is {pi:f}')
Pi number is 3.141593
>>> print(f'Pi number is {pi:.4f}')
Pi number is 3.1416
>>> print(f'Pi number is {pi:.2f}')
Pi number is 3.14
>>> round(10.5)
10
>>> round(10.51)
11

2.2.5. Built-in Functions

Builtin function pow() raises number to the n-th power. Note, that arithmetic operator ** also raises number to the power:

>>> pow(10, 2)
100
>>> pow(2, -1)
0.5
>>> pow(1.337, 3)
2.389979753
>>> pow(4, 0.5)
2.0
>>> pow(2, 0.5)
1.4142135623730951

Builtin function pow() can be used to calculate roots of a number:

>>> pow(4, 1/2)
2.0
>>> pow(2, 1/2)
1.4142135623730951
>>> pow(27, 1/3)
3.0
>>> pow(4, -1/2)
0.5
>>> pow(2, -1/2)
0.7071067811865476
>>> pow(27, -1/3)
0.33333333333333337
>>> pow(-2, -1)
-0.5
>>> pow(-4, -1)
-0.25

Builtin function pow() can return complex numbers. Note that Python has special complex() numeric type.

>>> pow(-2, -1/2)
(4.329780281177467e-17-0.7071067811865476j)
>>> pow(-2, 1/2)
(8.659560562354934e-17+1.4142135623730951j)
>>> pow(-4, -1/2)
(3.061616997868383e-17-0.5j)
>>> pow(-4, 1/2)
(1.2246467991473532e-16+2j)

Absolute value

>>> abs(1)
1
>>> abs(1.337)
1.337
>>> abs(-1)
1
>>> abs(-1.337)
1.337

2.2.6. Assignments

Code 2.9. Solution
"""
* Assignment: Type Float Tax
* Complexity: easy
* Lines of code: 5 lines
* Time: 3 min

English:
    1. Cost of the service is 100.00 PLN net
    2. Service has value added tax (VAT) rate of 23%
    3. Calculate tax and gross values
    4. To calculate tax, multiply net times VAT
    5. To calculate gross multiply net times VAT plus 1
    6. Mind the operator precedence
    7. Compare result with "Tests" section (see below)

Polish:
    1. Cena usługi wynosi 100.00 PLN netto
    2. Usługa objęta jest 23% stawką VAT
    3. Oblicz wartości podatku oraz cenę brutto
    4. Aby obliczyć podatek, pomnóż cenę netto razy stawkę VAT
    5. Aby obliczyć cenę brutto pomnóż cenę netto razy stawka VAT plus 1
    6. Zwróć uwagę na kolejność wykonywania działań
    7. Porównaj wyniki z sekcją "Tests" (patrz poniżej)

Tests:
    >>> type(net)
    <class 'float'>
    >>> type(tax)
    <class 'float'>
    >>> type(gross)
    <class 'float'>
    >>> net / PLN
    100.0
    >>> tax / PLN
    23.0
    >>> gross / PLN
    123.0
"""


# Given
PLN = 1
VAT = 23 / 100


Code 2.10. Solution
"""
* Assignment: Type Float Altitude
* Complexity: easy
* Lines of code: 3 lines
* Time: 3 min

English:
    1. Plane altitude is 10.000 ft
    2. Data uses imperial (US) system
    3. Convert to metric (SI) system
    4. Result round to one decimal place
    5. Compare result with "Tests" section (see below)

Polish:
    1. Wysokość lotu samolotem wynosi 10 000 ft
    2. Dane używają systemu imperialnego (US)
    3. Przelicz je na system metryczny (układ SI)
    4. Wynik zaokrąglij do jednego miejsca po przecinku
    5. Porównaj wyniki z sekcją "Tests" (patrz poniżej)

Tests:
    >>> type(result)
    <class 'float'>
    >>> result / ft
    10000.0
    >>> result / m
    3048.0
"""


# Given
m = 1
ft = 0.3048 * m


Code 2.11. Solution
"""
* Assignment: Type Float Volume
* Complexity: easy
* Lines of code: 4 lines
* Time: 3 min

English:
    1. Bottle volume is 20 Fl Oz
    2. Data uses imperial (US) system
    3. Convert to metric (SI) system
    4. Compare result with "Tests" section (see below)

Polish:
    1. Objętość butelki wynosi 20 Fl Oz
    2. Dane używają systemu imperialnego (US)
    3. Przelicz je na system metryczny (układ SI)
    4. Porównaj wyniki z sekcją "Tests" (patrz poniżej)

Tests:
    >>> type(result)
    <class 'float'>
    >>> result / floz
    20.0
    >>> result / liter
    0.5914688
"""


# Given
liter = 1
floz = 0.02957344 * liter


Code 2.12. Solution
"""
* Assignment: Type Float Distance
* Complexity: easy
* Lines of code: 4 lines
* Time: 5 min

English:
    1. Use code from "Given" section (see below)
    2. Convert units
    3. Instead `...` substitute calculated and converted values
    4. Note the number of decimal places
    5. Compare result with "Tests" section (see below)

Polish:
    1. Użyj kodu z sekcji "Given" (patrz poniżej)
    2. Przekonwertuj jednostki
    3. Zamiast `...` podstaw wyliczone i przekonwertowane wartości
    4. Zwróć uwagę na ilość miejsc po przecinku
    5. Porównaj wyniki z sekcją "Tests" (patrz poniżej)

Tests:
    >>> type(result)
    <class 'str'>
    >>> print(result)  # doctest: +NORMALIZE_WHITESPACE
    Meters: 1337
    Kilometers: 1.337
    Miles: 0.83
    Nautical Miles: 0.722
    All: km: 1, mi: 0.8, nm: 0.72
"""


# Given
m = 1
km = 1000 * m
mi = 1609.344 * m
nm = 1852 * m

distance = 1337 * m

result = f"""Meters: {...}
Kilometers: {...}
Miles: {...}
Nautical Miles: {...}
All: km: {...}, mi: {...}, nm: {...}"""


Code 2.13. Solution
"""
* Assignment: Type Float Velocity
* Complexity: easy
* Lines of code: 9 lines
* Time: 3 min

English:
    1. Speed limit is 75 MPH
    2. Data uses imperial (US) system
    3. Convert to metric (SI) system
    4. Speed limit print in KPH (km/h)
    5. Result round to one decimal place
    6. Compare result with "Tests" section (see below)

Polish:
    1. Ograniczenie prędkości wynosi 75 MPH
    2. Dane używają systemu imperialnego (US)
    3. Przelicz je na system metryczny (układ SI)
    4. Ograniczenie prędkości wypisz w KPH (km/h)
    5. Wynik zaokrąglij do jednego miejsca po przecinku
    6. Porównaj wyniki z sekcją "Tests" (patrz poniżej)

Tests:
    >>> type(kph)
    <class 'float'>
    >>> type(mph)
    <class 'float'>
    >>> type(result)
    <class 'float'>
    >>> round(kph, 3)
    0.278
    >>> round(mph, 3)
    0.447
    >>> round(result/mph, 1)
    75.0
    >>> round(result/kph, 1)
    120.7
"""


# Given
SECOND = 1
MINUTE = 60 * SECOND
HOUR = 60 * MINUTE

m = 1
km = 1000 * m
mi = 1609.344 * m


Code 2.14. Solution
"""
* Assignment: Type Float Pressure
* Complexity: medium
* Lines of code: 2 lines
* Time: 3 min

English:
    1. Operational pressure of EMU spacesuit: 4.3 PSI
    2. Operational pressure of ORLAN spacesuit: 400 hPa
    3. Calculate operational pressure in kPa for EMU
    4. Calculate operational pressure in PSI for Orlan
    5. Print all results in kPa and PSI rounding to one decimal places
    6. Compare result with "Tests" section (see below)

Polish:
    1. Ciśnienie operacyjne skafandra kosmicznego EMU (NASA): 4.3 PSI
    2. Ciśnienie operacyjne skafandra kosmicznego ORLAN (Roscosmos): 400 hPa
    3. Oblicz ciśnienie operacyjne skafandra EMU w kPa
    4. Oblicz ciśnienie operacyjne skafandra Orlan w PSI
    5. Wypisz wszystkie wyniki w kPa oraz PSI zaokrąglając do jednego miejsca po przecinku
    6. Porównaj wyniki z sekcją "Tests" (patrz poniżej)

Tests:
    >>> type(emu)
    <class 'float'>
    >>> type(orlan)
    <class 'int'>
    >>> emu
    29647.455099999996
    >>> orlan
    40000
    >>> emu / psi
    4.3
    >>> orlan / kPa
    40.0
    >>> round(emu/kPa, 1)
    29.6
    >>> round(orlan/psi, 1)
    5.8
"""


# Given
Pa = 1
hPa = 100 * Pa
kPa = 1000 * Pa
psi = 6894.757 * Pa


../../_images/spacesuits.png

Figure 2.1. EMU and Orlan

Code 2.15. Solution
"""
* Assignment: Type Float Percent
* Complexity: medium
* Lines of code: 2 lines
* Time: 3 min

English:
    1. International Standard Atmosphere (ISA) at sea level is 1 ata = 1013.25 hPa
    2. Calculate `pO2` - partial pressure of Oxygen at sea level
    3. Print result in kPa rounding to two decimal places
    4. To calculate partial pressure use ratio (100% is 1013.25 hPa, 20.946% is how many hPa?)
    5. Compare result with "Tests" section (see below)

Polish:
    1. International Standard Atmosphere (ISA) na poziomie morza wynosi 1 ata = 1013.25 hPa
    2. Oblicz `pO2` - ciśnienie parcjalne tlenu na poziomie morza
    3. Wynik wypisz w kPa zaokrąglając do dwóch miejsc po przecinku
    4. Aby policzyć ciśnienie parcjalne skorzystaj z proporcji (100% to 1013.25 hPa, 20.946% to ile hPa?)
    5. Porównaj wyniki z sekcją "Tests" (patrz poniżej)

Hints:
    * 1 hPa = 100 Pa
    * 1 kPa = 1000 Pa
    * 1 ata = 1013.25 hPa (ISA - International Standard Atmosphere)
    * Atmosphere gas composition:

        * Nitrogen 78.084%
        * Oxygen 20.946%
        * Argon 0.9340%
        * Carbon Dioxide 0.0407%
        * Others 0.001%

Tests:
    >>> type(pO2)
    <class 'float'>
    >>> pO2
    21223.5345
    >>> round(pO2/kPa, 2)
    21.22
"""


# Given
Pa = 1
hPa = 100 * Pa
kPa = 1000 * Pa
ata = 1013.25 * hPa
O2 = 20.946


Code 2.16. Solution
"""
* Assignment: Type Float Gradient
* Complexity: hard
* Lines of code: 7 lines
* Time: 8 min

English:
    1. At what altitude above sea level, pressure is equal to partial pressure of Oxygen
    2. Print result in meters rounding to two decimal places
    3. To calculate partial pressure use ratio (100% is 1013.25 hPa, 20.946% is how many hPa?)
    4. Calculated altitude is pressure at sea level minis oxygen partial pressure divided by gradient
    5. Mind the operator precedence
    6. Compare result with "Tests" section (see below)

Polish:
    1. Na jakiej wysokości nad poziomem morza panuje ciśnienie równe ciśnieniu parcjalnemu tlenu?
    2. Wypisz rezultat w metrach zaokrąglając do dwóch miejsc po przecinku
    3. Aby policzyć ciśnienie parcjalne skorzystaj z proporcji (100% to 1013.25 hPa, 20.946% to ile hPa?)
    4. Wyliczona wysokość to ciśnienie atmosferyczne na poziomie morza minus ciśnienie parcjalne tlenu podzielone przez gradient
    5. Zwróć uwagę na kolejność wykonywania działań
    6. Porównaj wyniki z sekcją "Tests" (patrz poniżej)

Hints:
    * pressure gradient (decrease) = 11.3 Pa / 1 m
    * 1 hPa = 100 Pa
    * 1 kPa = 1000 Pa
    * 1 ata = 1013.25 hPa (ISA - International Standard Atmosphere)
    * Atmosphere gas composition:

        * Nitrogen 78.084%
        * Oxygen 20.946%
        * Argon 0.9340%
        * Carbon Dioxide 0.0407%
        * Others 0.001%

Tests:
    >>> type(pO2)
    <class 'float'>
    >>> type(gradient)
    <class 'float'>
    >>> type(result)
    <class 'float'>
    >>> pO2
    21223.5345
    >>> gradient
    11.3
    >>> round(result/m, 2)
    7088.63
"""


# Given
m = 1
Pa = 1
hPa = 100 * Pa
ata = 1013.25 * hPa
O2 = 20.946