这只是为了学习。我想做以下事情。
x = 5.0
y = 888.0
z= y / x
print z # 177.6
...?
现在我想把float的最后一部分改为int,并把float最后一个数字(.6)加上第一个数字的6(从177.6得到777)。之后,我想把777和y的差加上一个新变量,得到888。
如果有人能解释如何做到这一点,那就太好了!:)编辑:这篇文章最后一段代码中的可能解决方案。
这样做的目的是了解如何在python中执行这些任务,并更好地理解我称之为"数学对称"的东西。
您可以在执行以下计算时找到这种对称性:
666 / 5.0 #133.2
777 / 5.0 #155.4
888 / 5.0 #177.6
999 / 5.0 #199.8
666.6 / 5.0 #133.32
我不是一个学者,所以也许这听起来很疯狂。这只是我意大利面条怪物头脑中理论的一部分,有了剧本,我可以进一步调查这是怎么回事。)
在注释的帮助下,我能够创建这个代码。我敢肯定,从专业程序员的角度来看,它看起来很难看,但嘿,这是我的第一步,我对此感到非常高兴!再次感谢!:)
x = 5.0
y = 888.0
z= y / x
print z # 177.6
print
a = int(str(z)[0])
print "First Number = " + str(a)
print
b = int(str(z)[1])
c = int(str(z)[2])
print "In between = " + str(b) + str(c)
d = int(str(z)[-1]) # treat z as string, take first string after . from z and format it back to int
print "Last Number = " + str(d)
print
res = str(a+d) +str(b) +str(c)
to_int = int(res)
dif = y - to_int
add = to_int + dif
print add
编辑:这个代码中有什么神奇的东西吗?实际的代码似乎是用来计算777.7之类的数字的。但当我用y=7277.7727运行它时,即使中间只有两位数,它也会给出正确的输出?我原以为计算错误。o0
编辑:已解决。计算中的逻辑故障导致了意外结果。实际上,我在最后打印y。xD
我认为最安全的方法是使用字符串操作:
int(str(177.123)[-1])
3
int(str(177.123).split('.')[-1])
123
但我担心你最终会被浮点精度问题所困扰。像sympy这样的符号数学包可能比标准浮点运算更适合您的目的。