Недостающая дата и время timedelta.to_seconds ()-> плавает в Python?

введите: dot -Tps filename.dot -o outfile.ps

Если вы хотите использовать точечный рендер. Есть альтернативы, такие как neato и twopi. Если Graphiz не на вашем пути, выясните, где он установлен, и запустите его оттуда.

Вы можете изменить выходной формат , изменив расширение имени файла, указанного в -o.

Если вы используете Windows, проверьте установленный инструмент под названием GVEdit, он немного облегчит весь процесс.

Посетите сайт graphviz в разделе «Руководства пользователя» для получения более подробной информации об использовании инструментов:

http://www.graphviz.org/documentation/

(см., Например, стр. 27 для форматирования вывода для команды «точка»)

http://www.graphviz.org/pdf/dotguide.pdf

9
задан cdleary 5 July 2009 в 22:45
поделиться

2 ответа

Число с плавающей запятой в Python составляет около 15 значащих цифр, поэтому, если в секундах до 86400 (5 цифр слева от десятичной точки), а в микросекундах требуется 6 цифр, вы вполне можете включить дни ( до нескольких лет) без потери точности.

Хорошая мантра - «пи секунды - это нано век» - примерно 3,14E9 секунды на 100 лет, то есть 3E7 в год, то есть 3E13 микросекунд в год. Мантра хороша тем, что запоминается, даже несмотря на то, что она требует, чтобы после этого вы проделали небольшую в уме арифметику (но, как и шпинат, она ХОРОШО для вас - держит вас подвижным и внимательным! -)

Философия дизайна datetime несколько минималистичен, поэтому неудивительно, что он пропускает множество возможных вспомогательных методов, которые сводятся к простым арифметическим выражениям.

12
ответ дан 4 December 2019 в 13:49
поделиться

Ваша забота о точности неуместна. Вот простой двухстрочный алгоритм для приблизительного подсчета того, сколько ЛЕТ вы можете втиснуть в то, что осталось от 53 бит точности в 64-битном поплавке IEEE754:

>>> import math
>>> 10 ** (math.log10(2 ** 53) - math.log10(60 * 60 * 24) - 6) / 365.25
285.42092094268787
>>>

Остерегайтесь округления; сначала добавьте самые маленькие ненулевые числа:

return timedelta.seconds + timedelta.microseconds / 1E6 + timedelta.days * 86400
3
ответ дан 4 December 2019 в 13:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: