smalltalk - 在 Smalltalk 中舍入为整数

标签 smalltalk pharo

我目前正在用 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/

相关文章:

smalltalk - Pharo 4 FFI 异步回调

testing - 如何以编程方式将故障注入(inject) Pharo 方法?

dom - 如何收集多个网页的 h1 标题?

smalltalk - 定义进程的最大运行时间

virtual-machine - 如何在没有镜像的情况下编译 Pharo VM?

arrays - Pharo 3 中文字数组和动态数组的区别

Smalltalk - 打印 :

smalltalk - 在 Smalltalk VisualWorks 7.9.1 中转换

smalltalk - pharo smalltalk 窗口关闭

构造函数实例变量 Pharo