相关疑难解决方法(0)

当用于除法时,'/'和'//'之间有什么区别?

使用一个比另一个有好处吗?在Python 2中,它们似乎都返回相同的结果:

>>> 6/3
2
>>> 6//3
2
Run Code Online (Sandbox Code Playgroud)

python math syntax operators

431
推荐指数
9
解决办法
50万
查看次数

Python 3.x舍入行为

我刚刚重新阅读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的时候一定有一些关于这个的讨论,但是我无法找到一个很好的理由我的搜索.

  1. 有没有人能够深入了解为什么会改变这种情况?
  2. 有没有其他主流编程语言(例如,C,C++,Java,Perl, ..)这样做(对我不一致)舍入?

我在这里错过了什么?

更新:@ Li-aungYip的评论"银行家的舍入"给了我正确的搜索词/搜索关键字,我发现了这个问题:为什么.NET使用银行家的舍入作为默认值?所以我会仔细阅读.

python rounding python-3.x

157
推荐指数
5
解决办法
5万
查看次数

Python 3中的整数除法 - 带有负数的奇怪结果

我是Python新手,我现在正在学习操作员.我明白:

  • /运营商用于floating point division
  • //integer division.

例:

7//3 = 2
Run Code Online (Sandbox Code Playgroud)

并且7//-3=-3.为什么答案-3

我被困在这里.

python integer-division python-3.4

16
推荐指数
2
解决办法
2353
查看次数

python中`//`运算符的用途是什么?

可能重复:
在Python中使用'//'的原因是什么?

//运营商的目的是什么?

x=10
y=2
print x/y
print x//y

两者都5作为值输出.

python operators

8
推荐指数
1
解决办法
2万
查看次数

为什么1 // 0.05在python中导致19.0?

我是python的新手,在我的mac上使用Python3.5.1时发现了一个令人困惑的结果,我只是在终端中运行了这个命令

    1 // 0.05
Run Code Online (Sandbox Code Playgroud)

但是,它在我的屏幕上打印了19.0.从我的观点来看,它应该是20.有人可以解释这里发生了什么吗?我已经知道'//'类似于math.floor()函数.但我还是无法理解这一点.

python floating-accuracy

4
推荐指数
1
解决办法
413
查看次数

将年份列表分成几十年

我有以下数组:

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 arrays numpy

2
推荐指数
2
解决办法
1239
查看次数