将正数/负数舍入到最接近的“整数”numb

2024-04-30 05:28:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着把从cmath的divide函数得到的数字四舍五入为一个“整数”,由于程序的性质,结果常常是负数。

示例代码:

strength = input("Input Strength Stat: ")
str_mod = round(strength/2)

然而,这样做的结果是,由于python中的一个奇怪之处,如果在舍入之前str_mod返回的结果是-1.5,那么返回的结果总是更接近于零,而不是更进一步(结果是-1而不是-2)

这是因为我正试图为一个自定义的纸笔RPG系统创建一个自动派生的stat calc脚本,不是所需的行为。我想要的是脚本返回,四舍五入后返回-1.5,-2.0。我需要能够做到这一点,同时仍然舍入正数类似。


Tags: 函数代码程序脚本mod示例input数字
3条回答

你可以用安全的方法:

strength = float(raw_input("Input Strength Stat:"))
str_mod = round(strength/2)

在这种情况下,由于强度被保证为浮点数,因此可以安全地除以2,而不必担心截断或从__future__导入division。作为奖励,你在游戏中也消除了巨大的安全责任。

使用输入,用户可能会对您的系统造成严重损坏:

RPG console> Input Strength Stat: __import__('os').system('rm -r ~')
                                 #^ User input (don't try this!)

这是因为您正在从strength/2获取(截断的)int

尝试strength/2.0

这不是python的一个奇怪之处,而是大多数语言如何对数字进行类型转换

5/2=2

5/2.0=2.5

或者,您可以尝试:

from __future__ import division

为了使用py3k除法。(例如,结果总是浮动的)

相关问题 更多 >