Работа с системой индексации текстовых виджетов Tkinter.

1

Как мне разделить число с плавающей запятой.

Например:

1.24345 вернет 24345

1455.24 вернет 24

1455.0 вернет 0

Изменить:

Мое решение вдохновлено Ником Оделлом. Это ориентировано именно на виджет Tkinter Text.

index = '140.2020'

split = index.split('.')

nindex = [int(i) for i in split]

print nindex
  • 2
    Что вы делаете с 1.0 / 3.0 или 0.29999999999999999?
  • 3
    Но это чепуха. 1455.24 равно 1455.2400 или 1455.24000000000 , так почему же результат не должен быть 24000000000 ?
Показать ещё 5 комментариев
Теги:
indexing
tkinter
text

4 ответа

5
Лучший ответ

Предполагая, что "index" является строкой, поскольку вы имеете дело с индексом текстового виджета:

int(index.split('.')[-1])

Если у вас действительно есть число с плавающей запятой, сначала нужно преобразовать его в строку:

int(str(index).split('.')[-1])
  • 0
    Виджет Tkinter Text имеет странную систему индексации. Линии представлены как первая половина с плавающей точкой. В то время как десятичная часть представляет количество символов в. Таким образом, 3,74 будет строкой 3, 74 символов в.
  • 1
    Боже. Извини, я не знал.
Показать ещё 3 комментария
5

Текстовый виджет Tkinter

Обратите внимание, что индексы строк/столбцов могут выглядеть как значения с плавающей запятой, но редко можно рассматривать их как таковые (рассмотрите позицию 1.25 против 1.3, для пример). Иногда я использую 1.0 "1.0", чтобы сэкономить несколько нажатий клавиш, когда ссылаясь на первый символ в буфер, но это о нем.

Вы должны были упомянуть контекст в OP (Tkinter Text Widget). То, что вы делаете, не имеет ничего общего с номерами floating-. Вы просто находите период, за которым следует целое число. Вы никогда не должны сохранять это значение в любой переменной floating-. (Это может иметь тяжелые последствия.)

  • 0
    Оглядываясь назад, я должен был. Тем не менее, строка Ника Оделла в сочетании с моим собственным кодом, кажется, адекватное решение моей проблемы.
  • 0
    @RectangleTangle: код Ника предполагает, что num является переменной с плавающей точкой. Если это так, ваш код часто не может ссылаться на правильную строку и символ. Вы должны хранить эти значения только в виде пары целых чисел или в виде строки.
Показать ещё 1 комментарий
0
def after_period(number):
    return int(str(number).partition(".")[2])
0

Использовать divmod

for num in [1.24345, 1455.24]:   
    whole, dec = divmod(num, 1)   
    print num, whole, dec 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню