Python:将一个浮点拆分为不同的变量,将最后一个浮点添加到第一个int并进行计算



这只是为了学习。我想做以下事情。

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这样的符号数学包可能比标准浮点运算更适合您的目的。

相关内容

  • 没有找到相关文章

最新更新