数字,日期,时间

Posted 粗哥记事

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数字,日期,时间相关的知识,希望对你有一定的参考价值。

1、我们想将一个浮点数取整到固定的小数位

使用内建的round(value,ndigits)即可:

1 >>> round(1.23,1)
2 1.2
3 >>> round(1.27,1)
4 1.3
5 >>> round(-1.27,1)
6 -1.3
7 >>> round(1.1231237,3)
8 1.123
9 >>> 

ndigits可以是负数,这样的情况下会相应的取整到十位,百位千位等,如:

 1 >>> round(1.1231237,3)
 2 1.123
 3 >>> a = 1231231
 4 >>> round(a,-1)
 5 1231230
 6 >>> round(a,-2)
 7 1231200
 8 >>> round(a,-3)
 9 1231000
10 >>> 

对值的输出时,不能把取整与格式化输出混为一谈,如果只是让数值以固定的位数输出,一般不用round():

1 >>> x = 1.23456
2 >>> format(x,0.2f)
3 1.23
4 >>> format(x,0.3f)
5 1.235
6 >>> value is {:0.3f}.format(x)
7 value is 1.235

执行精确的小数运算,我们先来看下面的小例子:

1 >>> a = 4.2
2 >>> b = 2.1
3 >>> a + b
4 6.300000000000001
5 >>> (a + b) == 6.3
6 False
7 >>> 

居然是False,这些误差实际上是底层CPU的浮点运算单元和IEEE754浮点运算术标准的一种特性,那么如何避免这样的误差,得到更高的精度呢(会牺一点性能),可以使用decimal模块

 1 >>> from decimal import Decimal
 2 >>> a = Decimal(4.2)
 3 >>> b = Decimal(2.1)
 4 >>> a + b
 5 Decimal(6.300000000000000266453525910)
 6 >>> print(a + b)
 7 6.300000000000000266453525910
 8 >>> a = Decimal(4.2)
 9 >>> b = Decimal(2.1)
10 >>> a + b
11 Decimal(6.3)
12 >>> print(a + b)
13 6.3
14 >>> (a + b) == 6.3
15 False
16 >>> (a + b) == Decimal(6.3)
17 True
18 >>> 

注意引号

 

 时间转换

 

#_*_coding:utf-8_*_
import time
import datetime
 
print(time.clock()) #返回处理器时间,3.3开始已废弃
print(time.process_time()) #返回处理器时间,3.3开始已废弃
print(time.time()) #返回当前系统时间戳
print(time.ctime()) #输出Tue Jan 26 18:23:48 2016 ,当前系统时间
print(time.ctime(time.time()-86640)) #将时间戳转为字符串格式
print(time.gmtime(time.time()-86640)) #将时间戳转换成struct_time格式
print(time.localtime(time.time()-86640)) #将时间戳转换成struct_time格式,但返回 的本地时间
print(time.mktime(time.localtime())) #与time.localtime()功能相反,将struct_time格式转回成时间戳格式
#time.sleep(4) #sleep
print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()) ) #将struct_time格式转成指定的字符串格式
print(time.strptime("2016-01-28","%Y-%m-%d") ) #将字符串格式转换成struct_time格式
 
#datetime module
 
print(datetime.date.today()) #输出格式 2016-01-26
print(datetime.date.fromtimestamp(time.time()-864400) ) #2016-01-16 将时间戳转成日期格式
current_time = datetime.datetime.now() #
print(current_time) #输出2016-01-26 19:04:30.335935
print(current_time.timetuple()) #返回struct_time格式
 
#datetime.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]])
print(current_time.replace(2014,9,12)) #输出2014-09-12 19:06:24.074900,返回当前时间,但指定的值将被替换
 
str_to_date = datetime.datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M") #将字符串转换成日期格式
new_date = datetime.datetime.now() + datetime.timedelta(days=10) #比现在加10天
new_date = datetime.datetime.now() + datetime.timedelta(days=-10) #比现在减10天
new_date = datetime.datetime.now() + datetime.timedelta(hours=-10) #比现在减10小时
new_date = datetime.datetime.now() + datetime.timedelta(seconds=120) #比现在+120s
print(new_date)

 

以上是关于数字,日期,时间的主要内容,如果未能解决你的问题,请参考以下文章

sql 日期转换代码片段 - Dato,120,konvertere

日期选择器对话框在片段中不起作用[关闭]

vscode 用户代码片段 vue初始化模板 Snippet #新加入开头注释 自动生成文件名 开发日期时间等内容

如何从片段中调用 getSupportFragmentManager()?

如何从我的 DatePicker 片段中传输格式化的日期字符串?

超实用的php代码片段