如何将值舍入到最接近的整数

时间:2014-10-29 12:04:44

标签: vb.net windows

我有以下代码,我试图将值四舍五入到最接近的整数。但我似乎无法弄清楚如何。我看了几个来源,但没有一个对我想要实现的目标有用。有没有一种方法可以解决这个问题?或者我有办法以编程方式进行吗?

例如

在我的数据库表中,我有一个列,它设置了允许的单个sms字符长度的限制,即160。 Screenshot

如果表单中的输入字符串是<然后允许最大长度,然后将输入字符串/除以允许的sms lenth,并将该值四舍五入到最接近的int。

到目前为止我尝试了什么:

    If (CInt(strText.Length) <= CInt(maxSmsLength)) Then
           doubleValueReturned = (CDec(CInt(strText.Length) / CInt(singleSmsLength)))
           smsCount = Round(doubleValueReturned)
           MsgBox(smsCount)
     end if 

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

真正问题的简单解决方案(计算发送任意大小的文本字符串所需的SMS消息数量)是使用Integer Divisionsymbol \)而不是{{3 (symbol /)。

除法总是返回一个丢弃浮点部分的整数。 因此,查找SMS消息的数量需要在返回的结果中添加1。 还存在正好160个字符或160的倍数的SMS消息的问题,在这种情况下,将整数除法的结果加1将会错误地消息数量。 只有在除法的余数不为零的情况下,才可以很容易地修复这一点

Dim smsRequired = (str.Length \ maxSmsLength) + 
                  (IF(str.Length Mod maxSmsLength = 0, 0, 1)) 

然而,这只是为了回答提问者问题并且在现实世界场景中不是正确的解决方案,当您想要发送超过160个字符的消息(或者如果消息包含一些特殊字符)时,您需要将消息分成少于160个字符

这里记录了Floating Point Division