相关疑难解决方法(0)

C#中的十进制Math.Round

可能重复:
为什么.NET使用银行家的舍入作为默认值?

这是一个示例代码

decimal num1=390, num2=60, result;
result=num1/num2; // here I get 6.5
result=Math.Round(result,0);
Run Code Online (Sandbox Code Playgroud)

结果的最终值应为7但是,我得到6.为什么这样的行为呢?

.net c# math

3
推荐指数
1
解决办法
6522
查看次数

C# Math.Round 错误?

好的,我意识到现在是星期天的早,所以我希望我只是遗漏了一些明显的东西:

我有这个功能:

private decimal CashConversion(decimal amount, decimal ratio)
{
    if (ratio == 1) return amount;

    decimal convertedAmount = amount / ratio;
    return Math.Round(convertedAmount, 2);
}
Run Code Online (Sandbox Code Playgroud)

当我这样称呼它时:

decimal tax = CashConversion(96.53, 15);
Run Code Online (Sandbox Code Playgroud)

“税”变量等于 6.43。但是,96.53/15 是 6.435333333333333。将其四舍五入到 2 个位置应返回 6.44。我在这里错过了什么吗?

c# math

3
推荐指数
1
解决办法
2916
查看次数

for循环中的C#bug

我不应该得到负数,请看下面的截图:

见下图:

在此输入图像描述

这是代码:

    for (double i=8.0; i<=12;i=i+0.5)
        {
          double aa=  (i - Convert.ToInt32(i)) ;
          Console.WriteLine(" "+i+" "+aa);
        }
Run Code Online (Sandbox Code Playgroud)

c# console for-loop visual-studio-2010

3
推荐指数
1
解决办法
306
查看次数

C#Math.Round(值/ 2).值为十进制.功能不适用于一个特定的数字4.5

我期待圆形小数,0.1到0.4向下舍入和0.5到0.9向上尝试这些,但由于某种原因,如果值为4.5它舍入到4而不是5所有其他值工作正常.3.5 = 4.0,5.5 = 6.0但4.5 = 4.0预期5.0

Math.Round(value / 2)
Math.Round(Math.Round(value / 2),0, MidpointRounding.AwayFromZero)
Run Code Online (Sandbox Code Playgroud)

.net c#

1
推荐指数
1
解决办法
103
查看次数

为什么小数2.5M轮到2?

我必须错过.NET舍入的一些微妙之处.所以我看这个例子:

decimal num = 2.5M;
var result = Math.Round(num);
Run Code Online (Sandbox Code Playgroud)

为什么result = 2?(我本来应该预期3,因为它应该围绕)

.net c# vb.net math

-2
推荐指数
2
解决办法
474
查看次数

标签 统计

c# ×5

.net ×3

math ×3

console ×1

for-loop ×1

vb.net ×1

visual-studio-2010 ×1