菜菜吃菜 2022-04-21 22:45 采纳率: 57.5%
浏览 75
已结题

c#循环递减小数,生成重复小数和指定数量


例如:1.20最大值 最小值0.23 生成30个小数:
1.20
1.20
1.20
1.20
1.19
1.19
1.19
1.18
1.18
1.18
1.18
..........
0.23
0.23
最后一位0.23,每次循环将一个数 输出,怎样实现呢?
  • 写回答

6条回答 默认 最新

  • 码老头 2022-04-22 08:26
    关注

    你这问题和我前几天回答的另一个问题有些类似,只不过你的需求是生成小数,而那个问题生成的是整数而已,请参考:

    补充示例如下:

    // 最小数
    
    var min = 23;
    // 最大数
    var max = 120;
    // 要生成数的个数
    var digits = 300;
    // 最小出现次数
    var minOccurrences = 1;
    if (digits < max - min + 1)
    {
        digits = max - min + 1;
        Console.WriteLine($"期望数小于实际数,自动补位期望数为{digits}");
    }
    
    // 生成的数的集合
    var numbers = new List<int>();
    // 先确保从最大数到最小数递减至少都有一个数
    numbers.AddRange(Enumerable.Range(min, max - min + 1).SelectMany(x => Enumerable.Repeat(x, minOccurrences)));
    // 查看结果
    Display(numbers);
    // 计算需要补位多少个数
    var fillGap = digits - (max - min + 1) * minOccurrences;
    if (fillGap <= 0)
    {
        Console.WriteLine("不需要补位");
        Console.ReadKey();
        return;
    }
    Console.WriteLine($"需要补位{fillGap}个数");
    var random = new Random();
    // 生成补位的数
    for (var i = 0; i < fillGap; i++)
    {
        numbers.Add(random.Next(min, max + 1));
    }
    Display(numbers);
    Console.ReadKey();
    
    static void Display(List<int> numbers)
    {
        var result = numbers.Select(x => x / 100.00).OrderByDescending(x=>x).ToList();
        Console.WriteLine(string.Join(",", result.Select(x=>x.ToString("0.00"))));
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 5月4日
  • 已采纳回答 4月26日
  • 创建了问题 4月21日

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里