首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可能的math.ceil()错误

问可能的math.ceil()错误
EN

Stack Overflow用户
提问于 2012-03-16 03:14:07
回答 4查看 2.7K关注 0票数 6

在Windows 7 Python 3.2上,如下所示:

代码语言:javascript
复制
print(int(math.ceil(24/10)))

不出所料地给出了'3‘。

在装有活动Python 2.5的Windows Server上,它给出了'2‘。

这里的问题是什么?我如何解决它?

以下是我的原始代码:

代码语言:javascript
复制
number_of_pages = int(math.ceil(number_of_rows/number_of_rows_per_page))

谢谢,

巴里

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-03-16 03:15:50

Python2.x使用截断差,所以24/10的答案是2。2的ceil仍然是2。

修复方法是将其中一个操作数转换为浮点数:

代码语言:javascript
复制
print(int(math.ceil(24.0/10)))
票数 17
EN

Stack Overflow用户

发布于 2012-03-16 05:12:24

快速浏览一下编程语言就会发现,整数除以整数会返回

a integer

java

  • c++

  • c

  • c#

  • ruby

  • ocaml

  • f#

  • go

  • fortran

  • python 2
  • python

浮点(星号表示有返回整数的替代语法)

  • python 3*
  • javascript
  • php
  • perl*
  • dart*
  • vbscript
  • vb.net*
  • erlang*
  • pascal*

  • clojure (如果不能返回整数,则返回比率)

Python更改除法运算符的语义时选择的是quite controversial。返回一个整数通常会让初学编程的程序员和数学家感到惊讶,然而,当有经验的程序员发现将两个整数相除可以返回浮点数时,他们通常会有同样的感觉。

票数 3
EN

Stack Overflow用户

发布于 2012-03-16 03:18:26

试试这个:print(int(math.ceil(24/10.0))),它将返回正确的值。如前所述,在Python2.5中,表达式24/10的计算结果为2,因为它执行的是整数除法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9726550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档