Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中带浮点的Timedelta乘法_Python_Datetime_Multiplication_Timedelta - Fatal编程技术网

python中带浮点的Timedelta乘法

python中带浮点的Timedelta乘法,python,datetime,multiplication,timedelta,Python,Datetime,Multiplication,Timedelta,我有两个日期,可以像往常一样计算时间差 但我想用得到的时间增量计算一些百分比: full_time = (100/percentage) * timdelta 但它似乎只能与区间相乘 如何使用float而不是int作为乘数 例如: percentage = 43.27 passed_time = fromtimestamp(fileinfo.st_mtime) - fromtimestamp(fileinfo.st_ctime) multiplier = 100 / pe

我有两个日期,可以像往常一样计算时间差

但我想用得到的时间增量计算一些百分比:

full_time = (100/percentage) * timdelta
但它似乎只能与区间相乘

如何使用
float
而不是
int
作为乘数

例如:

percentage     = 43.27
passed_time    = fromtimestamp(fileinfo.st_mtime) - fromtimestamp(fileinfo.st_ctime)
multiplier     = 100 / percentage   # 2.3110700254217702796394730760342
full_time      = multiplier * passed_time # BUG: here comes exception
estimated_time = full_time - passed_time
如果使用的是int(乘数),则精度会受到影响。

您可以使用:


您可以转换为总秒数,然后再次转换:

full_time = timedelta(seconds=multiplier * passed_time.total_seconds())
可从Python 2.7获得;在早期版本上使用

def timedelta_total_seconds(td):
    return (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / float(10**6)

你是对的,timedelta只支持整数的乘法或除法,但是为什么不一步一步地按顺序执行数学运算呢<代码>完整时间=通过时间*100/int(百分比)@Colin O'Coal,因为准确性:
2!=2.3131
。比较:
571*2=1142
(19,03(3)分钟)<代码>571*2.3131=13207801(220130016(6)分钟)。差大约3分钟(!)谢谢!老实说,我忘记了
timedelta
constructor。感谢您的“支持兼容性”)
def timedelta_total_seconds(td):
    return (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / float(10**6)