我目前正在构建我的Smalltalk的第一件事,我遇到了问题。我必须处理用户输入的数字,我需要将它除以2,仍然是一个整数。如果用户输入10,我将与5一起工作,如果他们输入11,我必须与6一起工作,但我显然会得到5.5。Roundt整数在Smalltalk
如果我能得到一个数字的mod,我可以简单地确保mod = 0,否则加0.5,它会做得一样好,但我无法找到如何在SmallTalk中进行mod操作,所有我的搜索最终会发现与实际社交小游戏无关的东西,这非常令人沮丧。
所以,如果你能告诉我如何得到一个数字的mod,这将是非常好的,如果你能告诉我如何用一个单独的函数进行调整,甚至更好。感谢您的帮助和时间。
更新:经过一番研究,我试图做这样说:
mod := par rem: 2.
mod = 0 ifFalse: [ par := par + 0.5 ].
这里为“国防部”是国防部变量“相提并论”的,如果是不为0,应该加起来0.5到标准杆。
我现在的问题是,尝试在时间重复使用par会导致“BoxedFloat64不明白#timesRepeat”错误。所以我仍然处于同一个问题,或者只是需要一种方法来使一个整数浮动。
您能否指定您使用的方言?例如pharo,squeak,vw,...? –
Pharo,虽然我的问题已经修复,谢谢。但是,如果您知道如何将浮点数(不包含小数部分)转换为整数,那么对于将来的参考将非常有用。 – Markski
您可以随时浏览BoxedFloat64及其超类的方法(Squeak具有“浏览协议”功能,可让您同时浏览所有这些方法,但我不知道它是否仍可在Pharo中使用,以及它是如何被调用的那里)。 Number有一个截断float的'asInteger'方法(这不正是你想要的,但它可以指导你进一步的方法)。还有'roundUpTo:','roundTo:'和'rounded'。整数除法的二进制消息是// //,其模伴侣是双反斜杠。 – JayK