我刚刚重新阅读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使用银行家的舍入作为默认值?所以我会仔细阅读.
我是Python新手,我现在正在学习操作员.我明白:
/运营商用于floating point division和//对integer division.例:
7//3 = 2
Run Code Online (Sandbox Code Playgroud)
并且7//-3=-3.为什么答案-3?
我被困在这里.
我是python的新手,在我的mac上使用Python3.5.1时发现了一个令人困惑的结果,我只是在终端中运行了这个命令
1 // 0.05
Run Code Online (Sandbox Code Playgroud)
但是,它在我的屏幕上打印了19.0.从我的观点来看,它应该是20.有人可以解释这里发生了什么吗?我已经知道'//'类似于math.floor()函数.但我还是无法理解这一点.
我有以下数组:
array([1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971,
1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982,
1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993,
1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013], dtype=object)
Run Code Online (Sandbox Code Playgroud)
我想把它分成单独的列表,每十年一个(例如1970-1979是十年).
现在,我正在循环多年并分成单独的列表.有更多的pythonic方式去做吗?
python ×6
operators ×2
arrays ×1
math ×1
numpy ×1
python-3.4 ×1
python-3.x ×1
rounding ×1
syntax ×1