我目前正在用 Smalltalk 构建我的第一个东西,但我遇到了一个问题。我必须处理一个用户输入的数字,我需要将它除以 2 并且仍然是一个整数。如果用户输入 10,我将使用 5,如果他们输入 11,我必须使用 6,但显然我会得到 5.5。
如果我能得到一个数字的模数,我可以简单地确保 mod = 0 否则加 0.5 就可以了,但我就是找不到如何在 SmallTalk 中进行模数运算,我所有的搜索最终陷入与实际社交闲聊无关的内容,这非常令人沮丧。
因此,如果您能告诉我如何获取数字的模数,那就太好了,如果您能告诉我如何使用单独的函数进行舍入,那就更好了。感谢您提前提供帮助和时间。
更新:经过一些研究,我尝试这样做:
mod := par rem: 2.
mod = 0 ifFalse: [ par := par + 0.5 ].
其中“mod”是变量“par”的模数,如果它不是 0,则它应该将 0.5 添加到 par。
我现在的问题是,尝试在 timesRepeat 中使用 par 会引发“BoxedFloat64 不理解#timesRepeat”错误。所以我仍然处于同一个问题中,或者只是需要一种方法将 float 变成整数。
最佳答案
有很多方法。例如
如果输入的数字是奇数,则在 div 之前将输入的数字加 1 除以 2
temp := enteredNumber.
temp odd ifTrue: [temp := temp + 1 ].
^temp / 2
使用天花板法
^(enteredNumber / 2) ceiling
关于smalltalk - 在 Smalltalk 中舍入为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46428442/