Vb.net 四舍五入至最接近5000

Vb.net 四舍五入至最接近5000,vb.net,Vb.net,如何在vb.net中四舍五入到最接近的5000。无法使用math.round,因为它会出错。我正在microsoft exel中寻找类似mround()的东西 Math.round(43333 * 34, 5000) 试一试 数学四舍五入(43000/5000)*5000 例如: 对于新单体中的每个x(){2499250125017000021004300099000} Console.WriteLine(String.Format(_ “将{0,7:N0}四舍五入至最接近的5000:{

如何在vb.net中四舍五入到最接近的5000。无法使用math.round,因为它会出错。我正在microsoft exel中寻找类似mround()的东西

  Math.round(43333 * 34, 5000)
试一试

数学四舍五入(43000/5000)*5000
例如:

对于新单体中的每个x(){2499250125017000021004300099000}
Console.WriteLine(String.Format(_
“将{0,7:N0}四舍五入至最接近的5000:{1,7:N0}”_
x,_
四舍五入(x/5000)*5000)_
)
下一个
Console.ReadKey(True)
产出:

将2499四舍五入到最接近的5000:0
四舍五入2501至最接近的5000:5000
将7000四舍五入到最接近的5000:5000
将21000四舍五入到最接近的5000:20000
四舍五入43000至最接近的5000:45000
将99000四舍五入到最接近的5000:100000
我要补充的是,文档中描述的默认舍入行为是“当一个数字位于其他两个数字的中间时,它将向最近的偶数舍入。”这意味着
0.5
可以根据情况舍入为
0
1
(这是处理统计数据时所需的行为)。要更改此行为,可以将
中点舍入.AwayFromZero
作为第二个参数,该参数的行为将与学校所教的相同(
0.5
始终舍入到
1
-0.5
始终舍入到
-1
)。

试试看

数学四舍五入(43000/5000)*5000
例如:

对于新单体中的每个x(){2499250125017000021004300099000}
Console.WriteLine(String.Format(_
“将{0,7:N0}四舍五入至最接近的5000:{1,7:N0}”_
x,_
四舍五入(x/5000)*5000)_
)
下一个
Console.ReadKey(True)
产出:

将2499四舍五入到最接近的5000:0
四舍五入2501至最接近的5000:5000
将7000四舍五入到最接近的5000:5000
将21000四舍五入到最接近的5000:20000
四舍五入43000至最接近的5000:45000
将99000四舍五入到最接近的5000:100000


我要补充的是,文档中描述的默认舍入行为是“当一个数字位于其他两个数字的中间时,它将向最近的偶数舍入。”这意味着
0.5
可以根据情况舍入为
0
1
(这是处理统计数据时所需的行为)。若要更改此行为,可以将
中点舍入.AwayFromZero
作为第二个参数,该参数的行为将与学校所教的相同(
0.5
始终舍入到
1
-0.5
始终舍入到
-1
).

会出现什么错误?小数只能四舍五入到0到28位精度之间。参数名称:小数第二个参数为
round()< /代码>是数字的数目,而不是数字的整数。Dang-IM哑,那么我如何绕过最近的5000?当你说到最近的5000时,你在寻找什么结果?<代码> 43333 * 34 < /代码>应该转为……什么?<代码> 1475000 < /代码>?你得到了什么错误?小数只能在0到28个精度的数字之间。参数名称:
Round()的第二个参数小数点
是数字,而不是要舍入的数字。dang我很笨,那我怎么舍入到最接近的5000?当你说舍入到最接近的5000时,你在寻找什么结果?
43333*34
应该舍入到…什么?
1475000
?这不是
Math.round()的用法吗<代码> > 5000代码> />代码>将导致整数除法。@ DanJ -您是正确的,但我假设所涉及的变量是“代码>浮点< /代码>。您可以考虑指定它们为非整数文字,然后。另一个怪癖:这总是四舍五入,不是吗?43333比40000更接近45000…@DanJ-不要这样认为,只要数字或分母是浮点/十进制值。@DanJ-事实上,在Visual Studio中检查后,我意识到在VB中
43000/5000
会产生浮点。你必须使用
43000\5000
引入整数除法。原始代码将按原样工作。我想我们都对C#感到困惑,它具有您所引用的行为。请参阅:
Math.Round()的用法不是吗<代码>>5000代码> />代码>将导致整数除法。@ DanJ -你是正确的,但我假设所涉及的变量是“代码>浮点< /代码>。你可以考虑将它们指定为非整数文字,然后。);另一个怪癖:它总是向下循环,不是吗?43333比40000更接近45000…@DanJ-不这样认为,只要数字或分母是浮点/十进制值。@DanJ-事实上,在Visual Studio中检查后,我意识到在VB
43000/5000
中会产生浮点。必须使用
43000\5000
引入整数除法。原始代码将按原样工作。我想我们都被C#搞糊涂了,它有你提到的行为。见: