总结出一个对非十进制单位的算法近似

 总结出一个对非十进制单位的算法近似。方法如下

 

问题:求m月d天,是什么星座。

解答:

    星座是跨月的。比如1月20--2月19是水瓶座(假设),而常识中“月”是非严格的30进制,m月d天,在一年中并不是固定的第X天。因此通常我们采用下面方法来判定是否为水瓶座。 

            (1==m && d >= 20) || (2==m && d<19)

 

     其实,我们要求的只是比较而非计算,因此,我们可以将进制变换,比如将月份变成100进制,则m月d天对应为第md 天,如(1月19号 ~= 119, 10月1日~=1001)     所以,判断m月d天,可以转换为(m×100+d)落在星座的那个区间,即可。

 

代码:

 

 

 

 进一步推广:

1     比较时间(只是举例,不考虑实际意义),1981.1.29 vs 1979.10.14,可以将年、月、日,甚至时、分秒都看成100

2    权值不同的事物进行比较 ...

你可能感兴趣的:(算法)