You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

关于C#分钟转天小时分钟代码中取模运算符(%)的作用及minutes%60工作原理的技术问询

解析C#代码中取模运算符(%)的作用,重点理解minutes%60

嘿,让我一步步给你拆解这段代码里取模运算符%的作用,特别是最后一行的minutes%60到底怎么工作的~

首先先明确这段代码的核心功能:它接收用户输入的总分钟数,把它转换成完整天数 + 剩余小时数 + 剩余分钟数的格式输出(一天按1440分钟计算,也就是24×60)。

先把完整代码贴出来方便对照:

using System;
public class Time
{
    public static void Main()
    {
        int minutes = int.Parse(Console.ReadLine());
        int days = (minutes/1440);
        int hours = (minutes%1440)/60;
        Console.WriteLine("days: " + days + " hours: " + hours + " minutes: " + minutes%60);
    }
}

接下来逐个解析取模的用法,重点聚焦最后一行的minutes%60

1. 先理解取模运算符%的本质

取模运算的核心是求两个整数相除后的余数,它只会保留被除数中“不够被除数整除的那部分”。比如a%b的结果,就是a减去b的整数倍后剩下的、小于b的非负整数。

2. 代码中各个取模的作用

  • minutes%1440(用于计算小时数)
    这里是先把总分钟数中“已经凑成完整天数的部分”去掉,只留下不足1天的剩余分钟数。比如输入1500分钟,1500%1440=60,意思是1500分钟里去掉1天(1440分钟)后,还剩60分钟,再除以60就得到1小时。

  • minutes%60(最后一行的核心)
    这个操作是直接从总分钟数里提取出不足1小时的剩余分钟数,不管前面的天数和小时数是多少。原理很简单:

    • 1小时=60分钟,任何总分钟数除以60,余数就是“不够凑成1小时的那部分分钟”。
    • 举几个例子:
      • 如果输入125分钟:125%60=5,对应2小时5分钟里的5分钟;
      • 如果输入180分钟:180%60=0,刚好是3小时,剩余0分钟;
      • 如果输入2000分钟:2000%60=20,对应1天9小时20分钟里的20分钟。

    为什么不用(minutes%1440)%60?其实结果是一样的,但直接用minutes%60更简洁——因为不管总分钟数有多少天,60是1440的约数,所以总分钟数对60取模,和“去掉整天后的剩余分钟数对60取模”结果完全相同。

举个完整例子验证

假设用户输入2000分钟:

  • days = 2000/1440 = 1(1天)
  • minutes%1440 = 2000-1440=560(剩余560分钟)
  • hours = 560/60=9(9小时)
  • minutes%60=2000%60=20(剩余20分钟)
    最终输出:days: 1 hours: 9 minutes: 20,完全符合预期。

内容的提问来源于stack exchange,提问作者doronbb

火山引擎 最新活动