我有两个整数值a和b,但我需要他们的浮点比例.我知道a < b并且我想要计算a / b,所以如果我使用整数除法,我将总是得到0,余数为a.
我如何c在Python中强制成为Python中的浮点数?
c = a / b
Run Code Online (Sandbox Code Playgroud) 我遇到过一些链接,说Python是一种强类型语言.
但是,我认为在强类型语言中你不能这样做:
bob = 1
bob = "bob"
Run Code Online (Sandbox Code Playgroud)
我认为强类型语言在运行时不接受类型更改.也许我对强/弱类型的定义错误(或过于简单).
那么,Python是一种强类型还是弱类型的语言?
我无法理解为什么Python没有sign函数.它有一个abs内置(我认为sign是它的妹妹),但没有sign.
在python 2.6中甚至有一个copysign函数(在数学中),但没有符号.copysign(x,y)当你只能写一个sign然后copysign直接从中获取时,为什么还要写一个abs(x) * sign(y)?后者会更加清晰:x带有y的符号,而对于copysign,你必须记住它的x是否带有y或y的符号,带有x的符号!
显然sign(x)不提供任何东西cmp(x,0),但它也会更具可读性(对于像python这样的高可读性语言,这本来是一个很大的优点).
如果我是一名蟒蛇设计师,那我就是另一种方式:没有cmp内置,而是一个sign.当你需要时cmp(x,y),你可以做一个sign(x-y)(或者,甚至更好的非数字的东西,只是一个x> y - 当然这应该需要sorted接受一个布尔而不是一个整数比较器).这也将更加清晰:正时x>y(而与cmp你必须记住公约正值当第一个是大,但它可能是周围的其他方式).当然cmp,由于其他原因(例如,在排序非数字事物时,或者如果您希望排序稳定,这是不可能使用简单的布尔值)
所以,问题是:为什么Python设计师决定将该sign功能从语言中删除?为什么麻烦copysign而不是它的父母sign呢?
我错过了什么吗?
编辑 - 在彼得汉森评论之后.很公平,你没有使用它,但你没有说你使用python的.在我使用蟒蛇的7年中,我无数次需要它,最后一根是打破骆驼背部的稻草!
是的,你可以通过cmp,但是我需要通过它的90%的时间都是这样的成语,就像
lambda x,y: cmp(score(x),score(y))用标志就好了.
最后,我希望你同意这sign会比这更有用copysign,所以即使我买了你的观点,为什么还要在数学中定义它而不是标志呢?copysign如何比签名更有用?
我刚刚重新阅读Python 3.0中的新功能,它指出:
round()函数舍入策略和返回类型已更改.确切的中途情况现在四舍五入到最接近的偶数结果而不是零.(例如,round(2.5)现在返回2而不是3.)
和圆形文件:
对于支持round()的内置类型,值被舍入到10的最接近的倍数到幂减去n; 如果两个倍数相等,则向均匀选择进行舍入
所以,在v2.7.3下:
In [85]: round(2.5)
Out[85]: 3.0
In [86]: round(3.5)
Out[86]: 4.0
Run Code Online (Sandbox Code Playgroud)
正如我所料.但是,现在在v3.2.3下:
In [32]: round(2.5)
Out[32]: 2
In [33]: round(3.5)
Out[33]: 4
Run Code Online (Sandbox Code Playgroud)
这似乎是违反直觉的,与我对四舍五入的理解相反(并且必然会绊倒人).英语不是我的母语,但在我读到这篇文章之前,我以为我知道舍入的含义是什么: - /我确信在引入v3的时候一定有一些关于这个的讨论,但是我无法找到一个很好的理由我的搜索.
我在这里错过了什么?
更新:@ Li-aungYip的评论"银行家的舍入"给了我正确的搜索词/搜索关键字,我发现了这个问题:为什么.NET使用银行家的舍入作为默认值?所以我会仔细阅读.
它基本上返回了box_needed.1个盒子可以包含10个项目.因此,如果用户键入的项目为102,则代码应返回11个框.
如果存在非零余数,是否有办法将该轮向上划分?
出现默认Python round(1 / 2)给出0.
如何循环浮动0.5到1.0,同时仍然四舍五入到0.45到0.0,正如通常的学校四舍五入?
注意:很抱歉删除并再次发布此内容,但它被错误地标记为另一个问题的副本.
我一直在为一个项目编写一个程序,并尝试使用round()函数将浮点变量舍入到下一个整数.在这个程序的情况下,它计算绘制一定量的平方英尺需要多少油漆(加仑).练习假设油漆只有整加仑,所以我的计算需要将所有加仑的分数计算到下一整加仑.
有什么想法吗?
谢谢,
斯科特