Vb.net 四舍五入到10的下一个倍数
在VB中,如何将值舍入到10的下一个倍数 e、 g 我发现有些东西说使用一个圆形函数,但当我将它输入到我的IDE(Microsoft Visual Studio Express 2015)中时,它无法识别它Vb.net 四舍五入到10的下一个倍数,vb.net,visual-studio-2015,rounding,Vb.net,Visual Studio 2015,Rounding,在VB中,如何将值舍入到10的下一个倍数 e、 g 我发现有些东西说使用一个圆形函数,但当我将它输入到我的IDE(Microsoft Visual Studio Express 2015)中时,它无法识别它 提前感谢使用天花板功能进行汇总。(信息) 先将其除以10,然后再将其乘以10即可 更新:如果您想知道,Integer没有问题这是一个基于Integer的解决方案 myNumber = If(myNumber Mod 10 = 0, myNumber, If(myNumber > 0,
提前感谢使用
天花板
功能进行汇总。(信息)
先将其除以10,然后再将其乘以10即可
更新:如果您想知道,Integer没有问题这是一个基于
Integer
的解决方案
myNumber = If(myNumber Mod 10 = 0, myNumber, If(myNumber > 0, 10, 0) + 10 * (myNumber \ 10))
它不受四舍五入的影响,而且比使用
数学至少快2倍。在visual basic中,用谷歌搜索四舍五入到10的下一个倍数似乎可以产生很多结果,例如。似乎有更多的方法不仅仅是round()
我尝试过这个方法,但它不识别roundround(X/N)*N
谢谢@CodeiSir,它工作得很好这不是一个很好的解决方案。Math.Ceiling
中只有两个重载可用于Double
或Decimal
。在Integer
的情况下,对Math.Ceiling
的调用被转换为Double
。这可能会导致舍入错误。向下投票意味着“这个答案没有用”,为什么要向下投票?当然,使用函数具有函数的效果,因此使用函数更合适。向下投票用于“最不有用”和“不有用”的答案。在您的回答中,您正在进行一些类型转换,它仅适用于选项Strict Off
。如果将选项设置为Strict On
,则此代码甚至不会编译。这不是一个好的健壮的解决方案。你是说没有人应该使用Math.Ceiling
,但这只是你的观点。答案绝不是错的。无论如何,他想使用round
,所以这正是他想要的。@EnigmativityMath.天花(CDec(myNumber)/10)*10
编译得很好,即使使用选项Sctrict On
Math.天花也不会影响整数的精度。您可以用double表示一个高达53位的整数而不会丢失,但是VB只使用32位整数。这就是整型可以随时转换为双精度的原因。()双打上的mod
也祝你好运。@CodeiSir-双打上的mod
在哪里?@Enigmativity OP的问题没有明确定义输入为integer
,你是这样解释的。我认为“thisNum是一个字符串”就足以暗示这一事实:-)如果我需要使用整数执行此操作,您的方法将得到我的投票@Jeroen-你从哪里得到“thisNum是字符串”的?这不在OP的问题或任何评论中。@Enigmativity我说那句话是开玩笑的,你甚至回应了。
myNumber = Math.Ceiling(myNumber / 10) * 10
myNumber = If(myNumber Mod 10 = 0, myNumber, If(myNumber > 0, 10, 0) + 10 * (myNumber \ 10))