Python: как округлить индексированное число? - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть следующий фрагмент кода (из части класса):

def __init__(self):
    self.data_end = self.datas[0].end
    self.data_start = self.datas[0].start

Затем следующий код:

def next_trans(self):
    if not self.position:
        if self.buy_signal > 0:
            size = int(self.getcash() / self.datas[0].start)
            self.log(f'BUY - Size: {size}, Cash: {self.getcash():.2f}, Start: {self.data_start[0]}, End: {self.data_end[0]}')
            self.start(size=size)

У меня проблема в том, что «Пуск» Значения "и" Конец "печатаются в виде длинных чисел с плавающей точкой (например, 89.12999725341797).

Я пробовал различные способы использования round (), но безуспешно. Я получаю ошибки, такие как:

AttributeError: 'LineBuffer' object has no attribute 'round'

и

TypeError: type LineBuffer doesn't define __round__ method

Как округлить вывод до двух десятичных разрядов (например, 89,13)?

Заранее спасибо!

1 Ответ

0 голосов
/ 18 апреля 2020

Решение состоит в том, чтобы добавить ":.2f":

self.log(f'BUY - Size: {size}, Cash: {self.getcash():.2f}, Start: {self.data_start[0]:.2f}, End: {self.data_end[0]:.2f}')

Первоначально я добавил ".2f" (отсутствует предыдущий ":"), в результате чего было выдано одно из сообщений об ошибках, которые я видел.

Спасибо @ Błotosmętek!

...