Smalltalk中的Round to Integer

Mar*_*ski 2 smalltalk pharo

我目前在Smalltalk上构建我的第一个东西,我遇到了一个问题.我必须处理用户输入的数字,我需要将其除以2,仍然是一个整数.如果用户输入10,我将使用5,如果他们输入11,我必须使用6,但我显然会得到5.5.

如果我可以得到一个数字的mod我可以简单地确保mod = 0否则添加0.5并且它会做得同样好,但我无法找到如何在SmallTalk中进行mod操作,所有我的搜索最终都在关于实际社交小动作的不相关的东西,这是非常令人沮丧的.

所以,如果你能告诉我如何获得一个数字的模型,那将是很好的,如果你能告诉我如何用一个单独的函数进行整理,甚至更好.感谢您的帮助和时间.

更新:经过一些研究,我试着这样做:

mod := par rem: 2.
mod = 0 ifFalse: [ par := par + 0.5 ].
Run Code Online (Sandbox Code Playgroud)

其中"mod"是变量"par"的mod,如果它不是0,它应该加0.5到par.

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

小智 5

有很多方法.例如

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

temp := enteredNumber.
temp odd ifTrue: [temp := temp + 1 ].
^temp / 2 
Run Code Online (Sandbox Code Playgroud)

使用天花板方法

^(enteredNumber / 2) ceiling
Run Code Online (Sandbox Code Playgroud)