New submission from STINNER Victor <vstin...@redhat.com>:

time.mktime() returns a floating point number:

>>> type(time.mktime(time.localtime()))
<class 'float'>

The documentation says:

"It returns a floating point number, for compatibility with :func:`.time`."

time.time() returns a float because it has sub-second resolution, but mktime() 
returns an integer number of seconds.

Would it make sense to change mktime() return type from float to int?

I would like to change mktime() return type to make the function more 
consistent: inputs are integers, it sounds wrong to me to return float. The 
result should be integer as well.

How much code would it break? I guess that the main impact are unit tests 
relying on repr(time.mktime(t)) exact value. But it's easy to fix the tests: 
use int(time.mktime(t)) or "%.0f" % time.mktime(t) to never get ".0", or use 
float(time.mktime(t))) to explicitly cast for a float (that which be a bad but 
quick fix).

Note: I wrote and implemented the PEP 564 to avoid any precision loss. mktime() 
will not start loosing precision before year 285,422,891 (which is quite far in 
the future ;-)).

----------
components: Library (Lib)
messages: 339632
nosy: belopolsky, p-ganssle, vstinner
priority: normal
severity: normal
status: open
title: Change time.mktime() return type from float to int?
versions: Python 3.8

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue36558>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to