13.python基础学习-精度计算(类似java中的BigDecimal)、四舍五入,取整、datetime、time日期与字符串转换的常见操作

修订日期 内容
2021-2-26 初稿

13.python基础学习-精度计算(类似java中的BigDecimal)、四舍五入,取整、datetime、time日期与字符串转换的常见操作

高精度计算(类似java中的BigDecimal对象)

float类型计算时可能会出现小数位不确定的情况,推荐使用decimal

# 高精度计算
from decimal import Decimal

f1 = 1.1
f2 = 2.2
print(1.1+2.2)  # 3.3000000000000003

print(Decimal(f1)+Decimal(f2))  # 3.300000000000000266453525910 (千万别写成这样)

print(Decimal(str(f1))+Decimal(str(f2)))  # 3.3 (推荐)

四舍五入,向上/向下取整


# 四舍五入(方式一) 不推荐
f1 = 3.1415
print(round(f1)) # 3 默认整数
print(round(f1,2)) # 3.14
print(round(f1,3)) # 3.142
print(round(f1,5)) # 3.1415 (以最高实际位数为准,不会补0)


print('===========')
# 四舍五入(方式二)
print('%.5f' % f1)  # 3.14150
print('%.3f' % f1)  # 3.142
print('%.2f' % f1)  # 3.14

print('===========')
# 四舍五入(方式三)
print(format(f1,'.5f'))  # 3.14150
print(format(f1,'.3f'))  # 3.142
print(format(f1,'.2f'))  # 3.14


import math
# 向上取整
print(math.ceil(f1))

# 向下取整
print(math.floor(f1))

日期时间字符串转换的常用操作

import datetime
import time
#
print(datetime.datetime.now()) # 2021-02-26 00:12:21.926747

today = datetime.date.today()
print(type(today),today) # <class 'datetime.date'> 2021-02-26

#  日期转字符串
print(type(str(today)),str(today)) # <class 'str'> 2021-02-26

d = datetime.date(2008,8,8)
print(type(d),d)  # <class 'datetime.date'> 2008-08-08


# 时间
t = time.time()

print(type(t),t) # <class 'float'> 1614269869.7454202

time_stamp = 1614269869.7454202
d2 = datetime.date.fromtimestamp(time_stamp)
print(type(d2),d2)  # <class 'datetime.date'> 2021-02-26

# 年月日
print(d2.year,d2.month,d2.day) # 2021 2 26

# 替换方法
print(d2.replace(2022,2,1)) # 2022-02-01

#print(d2.replace(2022,13,1)) # 报错

# 星期几 0表示周一,
print(d2,d2.weekday()) # 2021-02-26 4 表示周五

# 标准日期格式 -
print(type(d2.isoformat()), d2.isoformat()) # <class 'str'> 2021-02-26

# 转成字符串
print(d2.strftime('%Y年%m月%d日')) # 20210226日

# 创建时间
t1 = datetime.time(18,30,15)
print(type(t1),t1)  # <class 'datetime.time'> 18:30:15

# 单独获取时、分、秒、毫秒
print(t1.hour,t1.minute,t1.second,t1.microsecond)  # 18 30 15 0

print(t1.isoformat())  # 标准时间(有毫秒时也会输出毫秒)18:30:15

print(t1.strftime('%H时%M分%S秒 %f微秒')) # 183015000000微秒


# 字符串转换成日期时间
print('=====字符串转换成日期时间=======')
d3 = datetime.datetime.strptime('2021-02-26 18:30:01','%Y-%m-%d %H:%M:%S')
print(type(d3),d3)  # <class 'datetime.datetime'> 2021-02-26 18:30:01

# 时间差
#1.先生成时间差对象
dt_d = datetime.timedelta(days=365)
dt_m = datetime.timedelta(weeks=1)
dt_d = datetime.timedelta(days=-1) # 一天前
print(dt_d.days) # -1

now = datetime.datetime.now()
print(now.strftime('%Y年%m月%d日 %H时%M分%S秒')) # 20210226005510print((now+dt_d).strftime('%Y年%m月%d日 %H时%M分%S秒')) # 20210225005609(一天前的时间)


print(now - (now+dt_d)) # 1 day, 0:00:00

猜你喜欢

转载自blog.csdn.net/weixin_48470176/article/details/114108791