Отбросить знаки после запятой
Как сделать так, чтобы матрица и массив выводили числа, оставляя два знака после запятой?
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Как оставить несколько знаков после запятой, а остальные отбросить?
Если надо отбросить несколько знаков, то как сделать? Вот пример с округлением>>> n=4.3576 >>>.

Знаки после запятой
Здравствуйте, в питоне необходимо посчитать формулы,и есть одно значение t оно равно 0.0049.Но.

Знаки после запятой
Здравствуйте, подскажите, пожалуйста, как сделать чтобы второй список выводился 2 знака после.

Знаки после запятой
Добрый вечер, подскажите, как сделать 2 знака после запятой деленных элементов Задана матрица.

Перевод цифры в знаки после запятой
Есть вычисление и нужно задать точность, вводится цифра например 4 и получается 0.0001, как это.
Заклинатель змей
611 / 508 / 213
Регистрация: 30.04.2016
Сообщений: 2,412
fossaSama, https://mkaz.blog/code/python-. -cookbook/
1727 / 967 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6
fossaSama,
Фиксированное количество знаков после запятой в Python
![]()
5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1

Сообщение было отмечено fossaSama как решение
Решение
Можно просто настроить нужную точность чисел в numpy заранее. По умолчанию precision равно 8.
https://numpy.org/devdocs/refe. tions.html
1 2 3 4
import numpy as np >>> np.get_printoptions() {'edgeitems': 3, 'threshold': 1000, 'floatmode': 'maxprec', 'precision': 8, 'suppress': False, 'linewidth': 75, 'nanstr': 'nan', 'infstr': 'inf', 'sign': '-', 'formatter': None, 'legacy': False} >>>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
>>> from numpy import random >>> arr = random.rand(10,10) >>> arr array([[0.36697341, 0.31559821, 0.2023919 , 0.56273945, 0.37118678, 0.88048131, 0.29259809, 0.91691282, 0.29812323, 0.42969885], [0.29333711, 0.04109303, 0.55185044, 0.53474938, 0.57658848, 0.03251334, 0.57454605, 0.13572185, 0.01697031, 0.80189444], [0.51854947, 0.78453868, 0.64725702, 0.04275364, 0.44235743, 0.68863459, 0.48071535, 0.22392672, 0.25233454, 0.32729333], [0.71191024, 0.15783035, 0.15052415, 0.5404147 , 0.55105471, 0.2596028 , 0.1878657 , 0.92631933, 0.80065925, 0.93509046], [0.99348134, 0.06993033, 0.54254545, 0.9190226 , 0.44022353, 0.82800959, 0.52677573, 0.24785656, 0.10691409, 0.78110334], [0.73136466, 0.65517714, 0.09875042, 0.63299466, 0.86506457, 0.40773205, 0.78572788, 0.99123891, 0.90770014, 0.85943619], [0.88373847, 0.06711193, 0.39010743, 0.70495506, 0.27459529, 0.22244119, 0.08574645, 0.73150674, 0.56938561, 0.27239031], [0.40022303, 0.10508969, 0.22747917, 0.34713036, 0.69430642, 0.81013338, 0.95962563, 0.42996566, 0.11702334, 0.60695336], [0.5035225 , 0.17816809, 0.31623592, 0.93300297, 0.89956793, 0.37174236, 0.73494062, 0.68214981, 0.01376694, 0.4702791 ], [0.86927202, 0.32380927, 0.76289527, 0.23910709, 0.7441967 , 0.70314857, 0.23408618, 0.19053126, 0.31512275, 0.78257271]]) >>> np.set_printoptions(precision=2) >>> arr = random.rand(10,10) >>> arr array([[0.11, 0.79, 0.06, 0.82, 0.7 , 0.57, 0.59, 0.44, 0.14, 0.43], [0.63, 0.97, 0.35, 0.73, 0.71, 0.93, 0.63, 0.71, 0.14, 0.27], [0.19, 0.94, 0.7 , 0.94, 0.3 , 0.74, 0.67, 0.74, 0.27, 1. ], [0.76, 0.81, 0.11, 0.4 , 0.91, 0.43, 0.4 , 0.07, 0.98, 0.3 ], [0.22, 0.85, 0.28, 0.31, 0.59, 0.16, 0.69, 0.14, 0.73, 0.27], [0.93, 0.72, 0.97, 0.17, 0.02, 0.73, 0.7 , 0.02, 0.49, 0.3 ], [0.22, 0.94, 0.67, 0.39, 0.88, 0. , 0.85, 0.21, 0.73, 0.53], [0.71, 0.89, 0.12, 0.19, 0.38, 0.98, 0.63, 0.6 , 0.97, 0.28], [0.48, 0.91, 0.98, 0.94, 0.66, 0.29, 0.56, 0.99, 0.95, 0.29], [0.35, 0.6 , 0.26, 0.01, 0.33, 0.38, 0.08, 0.62, 0.14, 0.42]]) >>>
87844 / 49110 / 22898
Удаление отдельных чисел после запятой
Приветствую всех. Помогите исправить код. Данный скрипт делает удаление отдельных чисел которые находятся после запятой и удаление всех скобок, но скрипт работает очень медленно т.к. на удаление чисел файла с размером 1ГБ у меня уходит 4 часа я не особо разбираюсь в кодинге, но предположительно думаю что это из-за оператора if. Мне нужна ваше помощь в исправление кода или если сможете предложите пожалуйста что-нибудь другое упрощенное что работает быстрее. Заранее благодарю за помощь!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
file1 = open("list.txt", "r") while True: # считываем строку line = file1.readline()[1:] # прерываем цикл, если строка пустая if not line: break # выводим строку lots = line.partition(',')[0] with open("save.txt", "a") as file: file.write(str(""+lots)) file.write("\n") # закрываем файл file1.close
Результат:
1 2 3 4 5 6 7
(86898213,75120750) (55926576,70398017) (52864371,94758264) (76517111,10006259) (91815522,53600062) (84343967,67957926) (55708845,24222651)
1 2 3 4 5 6 7
86898213 55926576 52864371 76517111 91815522 84343967 55708845
Первая цифра после запятой Python
Условие: Если задано положительное вещественное число, выведите его первую цифру справа от десятичной точки.
Решение:
y = float(input()) print(int(y * 10) % 10)
Пояснение:
- Вводим вещественное число (т.е. имеющее дробную часть)
- Выводим командой print(): вещественное число, умноженное на 10, которое мы преобразовываем сначала в целое число, а после находим с помощью деления на остаток последнюю цифру, которая и будет являться первой после точки (запятой).
Округление чисел
При выполнении различных арифметических операций важно, чтобы результат округлялся правильно. Часто требуется округлять в большую, меньшую сторону, до ближайшего целого или округлить до сотых.
Для этого программист может использовать различные инструменты, такие как встроенная функция round(), преобразование к типу int и функции из подключаемого модуля math.
Способы округления чисел
Для округления чисел придумано много способов, они не лишены недостатков, однако часто используются для решения задач. Разберёмся в тонкостях каждого из них.
Если используется стандартная библиотека math, то в начале кода её необходимо подключить. Сделать это можно, например, с помощью инструкции: import math .
math.ceil() — округление чисел в большую сторону
Функция получила своё имя от термина «ceiling», который используется в математике для описания числа, которое больше или равно заданному.
Любая дробь находится в целочисленном интервале, например, 1.2 лежит между 1 и 2. Функция ceil() определяет, какая из границ интервала наибольшая и записывает её в результат округления.
math.ceil(5.15) # = 6 math.ceil(6.666) # = 7 math.ceil(5) # = 5
Важно помнить, что функция определяет наибольшее число с учётом знака. То есть результатом округления числа -0.9 будет 0, а не -1.
math.floor() — округление чисел в меньшую сторону
Функция округляет дробное число до ближайшего целого, которое меньше или равно исходному. Работает аналогично функции ceil() , но с округлением в противоположную сторону.
math.floor(7.9) # = 7 math.floor(9.999) # = 9 math.floor(-6.1) # = -7
math.trunc() — отбрасывание дробной части
Возвращает целое число, не учитывая его дробную часть. То есть никакого округления не происходит, Python просто забывает о дробной части, приводя число к целочисленному виду.
math.trunc(5.51) # = 5 math.trunc(-6.99) # = -6
Избавиться от дробной части можно с помощью обычного преобразования числа к типу int. Такой способ полностью эквивалентен использованию trunc() .
int(5.51) # = 5 int(-6.99) # = -6
Нормальное округление
Python позволяет реализовать нормальное арифметическое округление, использовав функцию преобразования к типу int.
И хотя int() работает по другому алгоритму, результат её использования для положительных чисел полностью аналогичен выводу функции floor(), которая округляет числа «вниз». Для отрицательных аналогичен функции ceil().
math.floor(9.999) # = 9 int(9.999) # = 9 math.ceil(-9.999) # = -9 int(-9.999) # = -9
Чтобы с помощью функции int() округлить число по математическим правилам, необходимо добавить к нему 0.5, если оно положительное, и -0.5, если оно отрицательное.
Тогда операция принимает такой вид: int(num + (0.5 if num > 0 else -0.5)). Чтобы каждый раз не писать условие, удобно сделать отдельную функцию:
def int_r(num): num = int(num + (0.5 if num > 0 else -0.5)) return num
Функция работает также, как стандартная функция округление во второй версии Python (арифметическое округление).
int_r(11.5) # = 12 int_r(11.4) # = 11 int_r(-0.991) # = -1 int_r(1.391) # = 1
round() — округление чисел
round() — стандартная функция округления в языке Python. Она не всегда работает так, как ожидается, а её алгоритм различается в разных версиях Python.
В Python 2
Во второй версии Python используется арифметическое округление. Оно обладает постоянно растущей погрешностью, что приводит к появлению неточностей и ошибок.
Увеличение погрешности вызвано неравным количеством цифр, определяющих, в какую сторону округлять. Всего 4 цифры на конце приводят к округлению «вниз», и 5 цифр к округлению «вверх».
Помимо этого, могут быть неточности, например, если округлить число 2.675 до второго знака, получится число 2.67 вместо 2.68. Это происходит из-за невозможности точно представить десятичные числа типа «float» в двоичном коде.
В Python 3
В третьей версии Python используется банковское округление. Это значит, что округление происходит до самого близкого чётного.
Такой подход не избавляет от ошибок полностью, но уменьшает шанс их возникновения и позволяет программисту добиться большей точности при вычислениях.
round(3.5) # = 4 round(9.5) # = 10 round(6.5) # = 6 round(-6.5) # = -6 round(-7.5) # = -8
Но если вам по каким то причинам нужно округление как в Python 2, то можно воспользоваться функцией написанной нами выше на основе приведения к целому числу.
Округление до сотых
У функции raund() есть ещё один аргумент. Он показывает до какого количества знаков после запятой следует округлять. Таким образом, если нам надо в Python округлить до сотых, этому параметру следует задать значение 2.
Пример округления до нужного знака:
round(3.555, 2) # = 3.56 round(9.515,1) # = 9.5 round(6.657,2) # = 6.66
Ошибки округления и модуль decimal
При округлении функцией round(), можно получить следующее:
round(2.65, 1) # = 2.6 round(2.85, 1) # = 2.9
Почему в одном случае округляется вниз, а в другом вверх? При переводе 2.85 в двоичную систему получается число, которое немного больше. Поэтому функция видит не «5», а «>5» и округляет вверх.
Проблему неточного представления чисел отлично иллюстрирует пример:
print (0.1 + 0.1 + 0.1) 0.30000000000000004
Из-за подобных ошибок числа типа «float» нельзя использовать там, где изменения значения на одну тысячную может привести к неверному результату. Решить данную проблему поможет модуль decimal.
decimal — модуль, позволяющий округлять десятичные дроби с почти 100% точностью. Его основной принцип: компьютер должен считать так, как считает человек. Речь идёт не о скорости вычисления, а о точности и отсутствии проблем неправильного представления чисел.