c# - 使用小数类型处理比率的算法

标签 c# algorithm decimal rounding

您会使用什么技术来使下面的测试通过?

干杯,
贝瑞尔

    [Test]
    public void PercentageToSplit() {
        for (int i = 1; i < 20; i++) {
            decimal ratio = 1m / i;
            Console.WriteLine(ratio);

            var splitCount = (int)Math.Floor(1 / ratio); // *** this won't do
            Console.WriteLine(splitCount );

            Assert.That(splitCount, Is.EqualTo(i));
        }

1 becomes 1
0.5 becomes 2
0.3333333333333333333333333333 becomes 3
0.25 becomes 4
0.2 becomes 5
0.1666666666666666666666666667 becomes 5
Test 'PercentageToSplit' failed: 
  Expected: 6
  But was:  5

最佳答案

如果将 Math.Floor 更改为 Math.Round,则测试通过。

关于c# - 使用小数类型处理比率的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8774668/

相关文章:

algorithm - 找到 dp 状态 ZUMA spoj

c# - 为什么 System.Web.HttpUtility.UrlEncode 给出的命名空间名称在 Visual C# 2008 中不存在?

python - 解析数组python中的文本文件

重新排列字符串中字符的 C# 算法

ios - 计算器小数点

java - 如果精度值小于标度则填充零

c# - 使用存储库模式从服务返回由 ID 选择的单个实体

c# - C#/F# 中的 cooking 测量

Monitor 类的 C# 多线程问题 - 可能的生命锁?

Java:简单地将十进制字节转换为十六进制字节