关于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分钟。
- 如果输入125分钟:
为什么不用
(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




