pandas: количество знаков после запятой
Решил рассчитать процент дохода от источника относительно общей суммы. В итоге есть значения вроде 0.0052 или 0.0007, но в столбце они автоматически обрезаются до 0.00. Пытался сделать так:
sources_revenue['ratio'] = (sources_revenue['revenue'] / sources_revenue['revenue'].sum() * 100).apply(''.format)`
, но так получаются строки. А apply(lambda x: float(x)) , astype(float) и to_numeric(sources_revenue.ratio) снова округляют до двух знаков.
Отслеживать
25k 4 4 золотых знака 20 20 серебряных знаков 36 36 бронзовых знаков
Кол-во разрядов после запятой. Python
Есть число a типа float
Надо определить кол-во знаков после запятой в этом числе.
Например, для a = 0.25 это 2.
Отслеживать
444 3 3 серебряных знака 15 15 бронзовых знаков
задан 24 апр 2017 в 18:23
user216622 user216622
Число a типа float : 1e-30 . Сколько у него знаков после запятой?
– user239133
24 апр 2017 в 18:46
Чему по вашему равно: 0.1 .as_integer_ratio() ? 1/10? Почему? Попробуйте ответ записать прежде чем запустить это выражение в REPL. Сколько знаков после запятой вы ожидаете для этого числа ( 0.1 )? Сколько знаков по вашему должно содержать 1/3, представленное как float? Сколько знаков после запятой вы хотите для результата выражения: 0.1+0.2 ? Что нужно знать про арифметику с плавающей запятой
24 апр 2017 в 20:07
str(32.123456)[::-1].find(‘.’) # 6 stackoverflow.com/questions/26231755/…
24 апр 2017 в 22:32
@vadimvaduxa: число в строке и число типа float это очень разные вещи. Сравните: Decimal(‘0.1’) и Decimal(0.1) .
24 апр 2017 в 23:40
6 ответов 6
Сортировка: Сброс на вариант по умолчанию
from decimal import Decimal print Decimal(str(0.25)).as_tuple().exponent*(-1)
Отслеживать
ответ дан 25 апр 2017 в 14:30
nick_gabpe nick_gabpe
3,923 4 4 золотых знака 21 21 серебряный знак 37 37 бронзовых знаков
@jfs верно заметил, что число типа float может принимать разные формы: оно может быть такого вида: 1e-5 . И если сложить
0.1 + 0.2
Результат будет не совсем таким, который можно предсказать.
0.30000000000000004
А тут 0.1 после единицы вообще сколько угодно нолей может быть.
В любом случае, вам без преобразования числа в строку никак не найти количество знаков после запятой.
Поэтому я предлагаю следующий код, чтобы не повторяться с предыдущими ответами:
number = 123.123123 s = str(number) print(abs(s.find('.') - len(s)) - 1)
Преобразовываем в функцию:
def get_count(number): s = str(number) if '.' in s: return abs(s.find('.') - len(s)) - 1 else: return 0
Как вывести определенное количество знаков после запятой python
Часто форматирование строк связано с их выводом на экран. Однако следует помнить, что на вывод передается уже сформированная строка. Создание строки, то есть ее форматирование (придание ей определенного вида), является отдельной операцией. Отформатированная строка может быть, например, присвоена переменной, а не выводиться сразу на экран.
% — оператор форматирования строки
Оператор % по отношению к строкам выполняет операцию форматирования и вставки таким образом, что объект, стоящий справа от него, встраивается согласно определенным правилам в строку слева от него:
Такой способ форматирования считается старым видимо потому, что заимствован из функции printf языка C, а в Python кроме него появились более продвинутые средства форматирования вывода. Однако в ряде случаев удобнее использовать оператор % .
Вывод вещественного числа с заданной точностью
Оператор деления / возвращает вещественное число. Если количество знаков после запятой бесконечно, интерпретатор Python выведит его с большим количеством знаков в дробной части:
С помощью оператора форматирования строки ( % ) можно выполнить округление числа до требуемой точности. Например, оставить только два знака после запятой. Для этого внутри строки, то есть в кавычках, записывают комбинацию символов, которая начинается со знака % . Далее ставят точку. Число после точки обозначает количество знаков после запятой. Символ f обозначает вещественный тип данных float .
Обратите внимание, переменная a содержит число с большим количеством знаков в дробной части. Строка ‘1.33’ является результатом выполнения выражения ‘%.2f’ % a . Функции print для вывода на экран передается строка ‘1.33’ . Предварительно эту строку можно было бы присвоить отдельной переменной:
С другой стороны, после оператора форматирования не обязательно указывать переменную. Чаще по правую сторону от него записывают непосредственно выражение. При этом берут его в скобки.
Строка, содержащая в себе форматы вывода данных, также может содержать обычные символы:
Символ d в формате вывода обозначает целое число (тип int ).
Оператор форматирования строк выполняет округление вещественных чисел, а не простое отбрасывание «лишних» цифр:
Вывод символа
Чтобы получить любой символ из таблицы Unicode, в формате вывода используют букву c , при этом после знака оператора форматирования указывают код требуемого символа.
Вставка в строку значений словаря через ключи
Вывод данных в поля заданной ширины
Бывает данные надо вывести в виде таблицы. Это значит, что каждый элемент данных выводится в поле определенной ширины, которая измеряется в знакоместах.
Например, вместо такого вывода:
надо получить такой:
Для таких случаев в формате вставки элемента данных в строку указывается ширина поля (в знакоместах). Делается это сразу после знака процента.
Знак «минус» заставляет данные выравниваться по левому краю. По умолчанию они выравниваются по правому:
Строковый метод format
Строковый метод format возвращает отформатированную версию строки, заменяя идентификаторы в фигурных скобках. Идентификаторы могут быть позиционными, числовыми индексами, ключами словарей, именами переменных.
Аргументов в format может быть больше, чем идентификаторов в строке. В таком случае оставшиеся игнорируются.
Числа с плавающей точкой¶
Десятичные дроби в Python хранятся в формате с плавающей точкой и представлены типом float . Они могут быть записаны несколькими способами:
Конструкция float(x) принимает строку или целое число и возвращает число с плавающей точкой, т.е. объект типа float . Примеры:
Для вывода чисел с плавающей точкой, как и для вывода других объектов, может быть использована функция print :
Также существует способ указать количество выводимых знаков после запятой:
При преобразовании чисел с плавающей точкой в целые дробная часть отбрасывается, округления по арифметическим правилам не выполняется:
Для решения вычислительных задач может быть полезен модуль math из стандартной библиотеки языка Python. Для его использования нужно написать строку import math . Для решения задач нам понадобятся число \(\pi\) и функция извлечения квадратного корня. Примеры их использования:
Задачи¶
Дан диаметр окружности \(d\) . Найти ее длину по формуле \(length = \pi \cdot d\) .
Дано значение температуры \(t\_f\) в градусах Фаренгейта. Определить значение этой же температуры в градусах Цельсия. Температура по Цельсию \(t\_c\) и температура по Фаренгейту \(t\_f\) связаны следующим соотношением:
Найти значение функции \(y = 3x^6 — 6x^2 — 7\) при заданном значении \(x\) .
Даны два неотрицательных числа \(a\) и \(b\) . Найти их среднее геометрическое по формуле \(\sqrt\) .
Даны катеты прямоугольного треугольника \(a\) и \(b\) . Найти его гипотенузу \(c\) и периметр \(p\) :
Найти значение функции \(y = 4(x — 3) ^ 6 — 7(x-3) ^ 3 + 2\) при заданном значении \(x\) .
Дан радиус круга, найти его площадь по формуле \(s = \pi \cdot r ^ 2\) .
Дано значение температуры в градусах Цельсия. Вычислить значение этой же температуры в градусах Фаренгейта. Формулу вывести самостоятельно.
Дан объем данных в мегабайтах. Перевести его в гигабайты и килобайты. Результат вывести с точностю до двух знаков после запятой.
Числа с фиксированной точностью. Класс Decimal
Числа с фиксированной точностью – это числа типа Decimal , которые при вычислениях используют фиксированное количество знаков после запятой. Тип Decimal – это специально разработанный класс (начиная с версии Python 2.4).
Понятие «фиксированная точность» означает, что с помощью таких чисел можно сохранять значение которое будет всегда иметь определенное количество знаков после запятой.
Например, нужно сохранять числа строго с числом 6 знаков после запятой.
Класс Decimal реализован в модуле decimal . Чтобы использовать возможности класса Decimal нужно выполнить команду
2. Как с помощью класса Decimal задать нужную фиксированную точность? Примеры
Чтобы создать объект класса Decimal используется конструктор этого класса. Конструктор получает строку с числом, в котором указывается заданная точность, например
3. Пример необходимости применения класса Decimal в программах на Python
В примере продемонстрирована необходимость написания программ с использованием класса Decimal для случаев, когда точность вычисления крайне важна.
Результат работы программы
Сначала создается объект (переменная) с именем a , в которую записывается сумма
Затем значение этой переменной выводится на экран. Как видно из результата, результат вычисления переменной a содержит погрешность. Это связано с тем, что память, которая выделяется для чисел вещественного типа, ограничена. Другими словами, количество бит в представлении вещественных чисел есть недостаточным.
На следующем шаге создается объект с именем b , в который записывается сумма с использованием класса Decimal
После вывода значения b на экран, видно что значение переменной b представлено точно без погрешности.
4. Пример использования класса Decimal и функции str()
В предыдущем примере конструктор класса Decimal получал строку с числом
в котором определялась точность (1 знак после запятой) и значение числа 0.2.
Возможна ситуация, когда нужно передать непосредственно число а не строку. В этом случае удобно использовать функцию str() , как показано ниже
Функция str() получает число и переводит его в строку
5. Использование фиксированной точности для чисел с разной точностью представлений. Пример
Возможна ситуация, когда в выражении, содержащем класс Decimal , имеются числа с разной точностью представлений. В этом случае точность результата автоматически устанавливается равной точности числа с наибольшей точностью представления.
Например. При сложении трех чисел
автоматически устанавливается точность 3 знака после запятой, поскольку конструктор
определяет число 0.001 с наибольшей точностью представления.
6. Создание объектов класса Decimal из вещественных чисел. Пример
Для случаев, когда есть в наличии вещественное число, можно создать объект класса Decimal . В этом случае используется метод from_float() класса Decimal .
Результат выполнения вышеприведенного кода
Как видно из результата, не всегда удается получить фиксированную точность при использовании метода from_float() .
7. Глобальная настройка точности. Пример
Бывают случаи, когда точность в программе нужно задать для всех операций текущего потока управления. Это может быть, например, представление денежных сумм с учетом копеек (2 знака после запятой).
Пример.
Результат выполнения программы
В вышеприведенном примере глобальная точность для класса Decimal задается с помощью функции getcontext() , которая возвращает объект контекста в этом модуле. Точность задается в текущем потоке управления.
Фиксированное количество знаков после запятой в Python
Как ограничить количество вводимых знаков в Edit после запятой, не ограничивая количество до запятой?
Доброго времени суток! Подскажите как реализовать так, чтобы после ввода в поле Edit запятой.
Как ограничить количество знаков после запятой, не ограничивая количество до запятой?
Как ограничить количество знаков после запятой, не ограничивая количество до запятой? Если, к.
Количество знаков после запятой
Подскажите как ограничить количество знаков после запятой. Количество чисел после запятой которое.
Количество знаков после запятой
Доброго времени суток, подскажите пожалуйста в такой вот проблеме, есть Edit в котором число с.
Сообщение было отмечено Gasratov как решение
Решение

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

Количество знаков после запятой
После запятой нужно всешжа показывать определенные число знаков, например шесть: 263.000000 Иными.
Количество знаков после запятой
знаю что тема затёрта до дыр,но всёж прошу ответить без сарказма. 1.после вычисления на label1.

Количество знаков после запятой
Цикл должен считать количество знаков после запятой у переменной g. У меня при вводе, например.
Количество знаков после запятой
Вводится целое число 2 Нужно вывести 2.0 Что нужно сделать если setprecision(1) не работает
количество знаков после запятой
всем привет. Народ, такой вопрос, производится такой расчет: stoim1:=(Ram/1000)*720;.
Похожие публикации:
- Как остановить python
- Как открыть приложение с помощью python
- Как отсортировать список в обратном порядке python
- Как перевернуть строку в python
Фиксированное количество знаков после запятой в Python
Вот так можно указать количество знаков после запятой при выводе:
a = [1000, 2.4, 2.23456754323456, 2754.344] for i in a: print('%.3f' % i) # 3 знака после запятой
1000.000 2.400 2.235 2754.344
Отслеживать
ответ дан 4 апр 2017 в 18:55
Кирилл Малышев Кирилл Малышев
10.8k 1 1 золотой знак 18 18 серебряных знаков 34 34 бронзовых знака
а чем запись print(‘%.3f’ % i) лучше(хуже) записи x = float(‘<:.3f>‘.format(x)) ?
12 янв 2019 в 13:56
@Rashid-s, рекомендуется в Python 3 использовать format. stackoverflow.com/questions/12382719/…
12 янв 2019 в 14:04
Мне кажется что вы слегка усложняете. Есть чудесная функция round(), в которую в можете передать число, а через запятую передать количество знаков после. Так как всё равно там будет округление
d = round(3.14, 1) print(d) # 3.1
Отслеживать
ответ дан 23 авг 2020 в 13:01
41 2 2 бронзовых знака
Вы пробовали тестировать ваше решение на примерах из вопроса?
23 авг 2020 в 13:12
Почему вы считаете, что ТС что-то услажняет? round (123.000001, 3) # 123.0 , но ожидаемый результат другой. Он является нескромным желанием? Если да, то почему?
23 авг 2020 в 13:28
def toFixed(f: float, n=0): a, b = str(f).split('.') return '<>.<><>'.format(a, b[:n], '0'*(n-len(b))) f = 7.123 print(toFixed(f, 10)) # 7.1230000000 print(toFixed(f, 2)) # 7.12
Отслеживать
ответ дан 5 апр 2017 в 8:50
vadim vaduxa vadim vaduxa
8,932 14 14 серебряных знаков 24 24 бронзовых знака
Я для этого использую встроенный модуль. Понятно, что он возвращает Decimal, но я потом обратно преобразую во float.
from decimal import Decimal number = Decimal('0.424242') number = number.quantize(Decimal('1.000')) number = float(number) # возвращает true, т.к. оба типа данных теперь float print( 0.424 == number )
Отслеживать
ответ дан 11 апр 2020 в 13:23
Nick Alexander Nick Alexander
если нужно не округлить, а именно обрезать знаки после запятой n = float(input())
print(int(n * 1000) / 1000)
print(n * 1000 //1 /1000)
a=input() print(float(a[:5])) #если заранее известно количество знаков
