鱼C论坛

 找回密码
 立即注册
查看: 1946|回复: 2

[已解决]python的四舍五入

[复制链接]
发表于 2020-11-4 20:54:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import math
>>> def cei(n,d=2):
...     d = int('1' + ('0' * (d+1)))
...     x = int((n*d-5 if n<0 else n*d+5)/10)/(d/10)
...     return x
...
>>> cei(-12.200356,4)
有人教一下这个吗,我看不懂那个d = int('1' + ('0' * (d+1)))
...     x = int((n*d-5 if n<0 else n*d+5)/10)/(d/10)
最佳答案
2020-11-4 21:15:13
d = int('1' + ('0' * (d+1)))
意思是把字符串'1' + ('0' * (d+1))的计算结果转为整数类型,再赋值给d
计算过程:
先括号d+1,默认d=2,这里d+1等于3
再计算乘,‘0’*3意思是把字符串‘0’重复3次,也就变成了字符串‘000’
再计算加,‘1’+‘000’,就是字符串合并,变成了字符串‘1000’

x = int((n*d-5 if n<0 else n*d+5)/10)/(d/10)
这个同理:
1、n*d-5 if n<0 else n*d+5,意思是如果n<0,则结果为n*d-5,否则为n*d+5
2、其他的自己分析咯
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-4 21:15:13 | 显示全部楼层    本楼为最佳答案   
d = int('1' + ('0' * (d+1)))
意思是把字符串'1' + ('0' * (d+1))的计算结果转为整数类型,再赋值给d
计算过程:
先括号d+1,默认d=2,这里d+1等于3
再计算乘,‘0’*3意思是把字符串‘0’重复3次,也就变成了字符串‘000’
再计算加,‘1’+‘000’,就是字符串合并,变成了字符串‘1000’

x = int((n*d-5 if n<0 else n*d+5)/10)/(d/10)
这个同理:
1、n*d-5 if n<0 else n*d+5,意思是如果n<0,则结果为n*d-5,否则为n*d+5
2、其他的自己分析咯
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-11 13:29:31 | 显示全部楼层
d = int('1' + ('0' * (d+1)))
就是根据d来生成一个整数,1 加上d+1 个0 来生成。例如:d=2 &#61664; 1000
x = int((n*d-5 if n<0 else n*d+5)/10)/(d/10)
四舍五入分正数和负数两种情况,正数 +5,负数 -5
我们只讨论正数:
d 表示保留几位小数,如保留 2 位,就乘以 1000,再 +5
除以 10 后取整
再除以 100
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-18 00:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表