我目前正在Smalltalk上构建我的第一本书,但遇到了一个问题。我必须处理用户输入的数字,我需要将其除以2并仍然是整数。如果用户输入10,我将使用5,如果用户输入11,则我将使用6,但是显然我将获得5.5。

如果我可以得到一个数字的mod,我可以简单地确保mod = 0否则加0.5,它的效果也一样好,但是我只是无法找到如何在SmallTalk中进行mod运算,所有的搜索都以与实际的社交闲聊无关的东西,这非常令人沮丧。

因此,如果您能告诉我如何获取数字的mod,那就更好了,如果您能告诉我如何使用单独的函数取整,那就更好了。感谢您的帮助和时间。

更新:经过一些研究,我尝试通过这种方式进行操作:

mod := par rem: 2.
mod = 0 ifFalse: [ par := par + 0.5 ].

其中“mod”是变量“par”的mod,如果它不为0,则应该将0.5加到par。

我现在的问题是,尝试在timesRepeat中使用par会出现“BoxedFloat64无法理解#timesRepeat”错误。所以我仍然处于同一问题中,或者只需要一种将浮点数转换为整数的方法。

最佳答案

有很多方法。例如

如果输入的数字为奇数,则在输入的数字前加1除以2的div

temp := enteredNumber.
temp odd ifTrue: [temp := temp + 1 ].
^temp / 2

使用天花板法
^(enteredNumber / 2) ceiling

关于smalltalk - 在Smalltalk中舍入为整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46428442/

10-13 07:50