Files
learn-python3/notebooks/beginner/numbers.ipynb
Jerry Pussinen 46450175dc Initial commit
2018-05-01 13:59:37 +02:00

205 lines
3.8 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# [Numbers](https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## `int`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"my_int = 6\n",
"print('value: {}, type: {}'.format(my_int, type(my_int)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## `float`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"my_float = float(my_int)\n",
"print('value: {}, type: {}'.format(my_float, type(my_float)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note that division of `int`s produces `float`:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"print(1 / 1)\n",
"print(6 / 5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Be aware of the binary floating-point pitfalls (see [Decimal](#decimal) for workaround):"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"val = 0.1 + 0.1 + 0.1\n",
"print(val == 0.3)\n",
"print(val)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Floor division `//`, modulus `%`, power `**`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"7 // 5"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"7 % 5"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"2 ** 3"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a id='decimal'></a>\n",
"## [`decimal.Decimal`](https://docs.python.org/3/library/decimal.html)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"from decimal import Decimal"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"from_float = Decimal(0.1)\n",
"from_str = Decimal('0.1')\n",
"print('from float: {}\\nfrom string: {}'.format(from_float, from_str))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"my_decimal = Decimal('0.1')\n",
"sum_of_decimals = my_decimal + my_decimal + my_decimal\n",
"print(sum_of_decimals == Decimal('0.3'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Operator precedence in calculations\n",
"Mathematical operator precedence applies. Use brackets if you want to change the execution order:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"print(1 + 2**2 * 3 / 6) # 1 + 4 * 3 / 6 == 1 + 12 / 6 == 1 + 2\n",
"print((1 + 2**2) * 3 / 6)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}