万年历的实现,万年历怎么做出来的

最初万年历由什么实现

古代人民在长期的生活和生产实践中,认识到木、火、土、金、水是不可缺少的最基本物质,故五行最初称作五材”。如《左传》 说:“天生五材,民并用之,废一不可”;《尚书》中说得更清楚:“水火者,百姓之所饮食也;金木者,百姓之所兴作也;土者,万物之所资生,是为人用”。 五行学说,是在“五材”说的基础上,进一步引申为世界上的一切事物,都是由木、火、土、金、水五种基本物质之间的运动变化而生成的。如《国语·郑语》说:“故先王以土与金、木、水、火杂,以成百物”。同时;还以五行之间的生、克关系来阐释事物之间的相互联系,认为任何事物都不是孤立时、静止的,而是在不断的相生、相克的运动之中维持着协调平衡的。这即是五行学说的基本涵义,也是属于我国古代唯物辩证观的主要依据。 中医学理论体系在其形成过程中,受到五行学说的极其深刻影响,它同阴阳学说一样,也已成为中医学独特理论体系的组成部分,在历史上对中医学术的发展起了深远的影响。 五行学说的基本内容 五行的特性 五行的特性,是古人在长期的生活和生产实践中,对木、火、土、金、水五种物质的朴素认识基础上,进行抽象而逐渐形成的理论概念,用以分析各种事物的五行属性和研究事物之间相互联系的基本法则。因此,五行的特性,虽然来自木、火、土、金、水,但实际上已超越了木、火、土、金、水具体物质的本身,而具有更广泛的涵义。 木的特性:古人称“木曰曲直”。“曲直”,实际上是指树木的生长形态,都是枝干曲直,向上向外周舒展。因而引申为具有生长、升发、条达舒畅等作用或性质的事物,均归属于木。 火的特性:古人称“火曰炎上”。“炎上”,是指火具有温热、上升的特性。因而引申为具有温热、升腾作用的事物,均归属于火。 土的特性:古人称“土爱稼穑”。“稼穑”,是指土有播种和收获农作物的作用。因而引申为具有生化;承载、受纳作用的事物,均归属于土。故有“土载四行”、“万物土中生,万物土中灭”和“土为万物之母”之说。 金的特性:古人称“金日从革”。“从革”,是指“变革”的意思。引申为具有清洁、肃降、收敛等使用的事物,均归属于金。 水的特性:古人称“水曰润下”。是指水具有滋润和向下的特性。引申为具有寒凉、滋润、向下运行的事物,均归属于水。 事物的五行属性推演和归类 五行学说是以五行的特性来推演和归类事物的五行属性的。所以事物的五行属性,并不等同于木、火、土、金、水本身,而是将事物的性质和作用与五行的特性相类比,而得出事物的五行属性。如事物与木的特性相类似,则归属于木;与火的特性相类似,则归属于火;等等。例如: 以方位配属五行,则由于日出东方,与木的升发特性相类,故归属于木;南方炎热,与火的炎上特性相类,故归属于火;日落于西,与金的肃降特性相类,故归属于金;北方寒冷,与水的特性相类,故归属于水;……。 以五脏配属五行,则由于肝主升而归属于木,心阳主温煦而归属于火,脾主运化而归属于土,肺主降而归属于金,肾主水而归属于水。 事物的五行属性,除了可用上述方法进行取象类比之外,还有间接的推演络绎的方法。如:肝属于木以后,则肝主筋和肝开窍于目的“筋”和“目”亦属于木;心属于火,则“脉”和“舌” 亦属于火;脾属于土,则“肉”和“口”亦属于土;肺属于金,则“皮毛”和“鼻”亦属于金;肾属于水,则“骨”和“耳”、“二阴”亦属于水。 此外,五行学说还认为属于同一五行属性的事物,都存在着相关的联系。如《素问·阴阳应象大论》所说的“东方生风,风生木,木生酸,酸生肝,肝生筋……”,即是说方位的东和自然界的风、木以及酸味的物质都与肝相关。因而也有人认为五行学说是说明人与自然环境统一的基础。现将自然界和人体的五行属性,列简表如下页。 事物以五行的特性来分析、归类和推演络绎,把自然界的千变万化事物,归结为木、火、土、金、水的五行系统。对人体来说,也即是将人体的各种组织和功能,归结为以五脏为中心的五个生理、病理系统。 五行的生克乘侮 五行学说并不是静止地、孤立地将事物归属于五行,而是以五行之间的相生和相克联系来探索和阐释事物之间相互联系、相互协调平衡的整体性和统一性。同时,还以五行之间的相乘和相侮,来探索和阐释事物之间的协调平衡被破坏后的相互影响,这即是五行生克乘侮的主要意义。 (1)生克和制化 相生,是指这一事物对另一事物具有促进、助长和资生的作用;相克,是指这一事物对另一事物的生长和功能具有抑制和制约的作用。相生和相克,在五行学说中认为是自然界的正常现象;对人体生理来说,也是属于正常生理现象。正因为事物之间存在着相生和相克的联系,才能在自然界维持生态平衡,在人体维持生理平衡,故说“制则生化”。 五行相生的次序是:木生火,火生土,土生金,金生水,水生木。 五行相克的次序是:木克土,土克水,水克火,火克金,金克木。 这样以次相生,以次相克,如环无端,生化不息,维持着事物之间的动态平衡。故《类经图冀》说:“造化之机,不可无生,亦不可无制。无生则发育无由,无制则亢而为害”。 由于五行之间存在着相生和相克的联系,所以从五行中的任何“一行”来说,都存在着 “生我”、“我生”和“克我”、“我克”四个方面的联系。 “生我”和“我生”,在《难经》中比喻为“母”和“子”的关系。“生我”者为:母”,“我生”者为 “子”,所以五行中的相生关系又可称作“母子”关系。如以火为例,由于木生火,故“生我”者为木;由于火生土,故“我生”者为土。这样木为火之“母”,土为火之“子”;也就是木和火是 “母子”,而火和土又是“母子”。 “克我”和“我克”,在《内经》中称作“所不胜”和“所胜”。即是“克我”者是“所不胜”,“我克”者是“所胜”。再以火为例,由于火克金,故“我克”者为金;由于水克火,故“克我”者为水。 “生我”、“我生”虽是五行中的相生,但生中有制。如木的“生我”为水,木的“我生”为火;而水又能制火。“克我”和“我克”虽是五行中的相克,但克中有生。如木的“克我”为金,木的 “我克”为土;而土又生金。五行学说就是以五行之间这种错综复杂的联系,来说明任何一个事物是受到整体的调节,防止其太过或不及,维持着相对的平衡。以此来阐释自然,即能说明自然气候的正常变迁和自然界的生态平衡;以此来阐释人体,即是机体的生理平衡。 (2)乘侮 五行之间的相乘、相侮,其基本概念首见于《内经》,是指五行之间的生克制化遭到破坏后出现的不正常相克现象。 相乘:乘,即是以强凌弱的意思。五行中的相乘,是指五行中某“一行”对被克的“一行” 克制太过,从而引起一系列的异常相克反应。引起相乘的原因,不外乎两个方面; 一是五行中的某“一行”本身过于强盛,因而造成对被克制的“一行”克制太过,促使被克的“一行”虚弱,从而引起五行之间的生克制化异常。例如:木过于强盛,则克土太过,造成土的不足,即称为“木乘土”。 一是五行中的某“一行”本身的虚弱,因而对它“克我”一行”的相克就显得相对的增强,而其本身就更衰弱。例如:木本不过于强盛,其克制土的力量也仍在正常范围。但由于土本身的不足,因而形成了木克土的力量相对增强,使土更加不足,即称为“土虚木乘”。 相侮:侮,在这里是指“反侮”。五行中的相侮,是指由于五行中的某“—行”过于强盛,对原来“克我”的“一行”进行反侮,所以反悔亦称反克。例如:木本受金克,但在木特别强盛时,不仅不受金的克制,反而对金进行反侮(即反克),称作“木侮金”,这是发生反侮的一个方面。另一方面,也可由金本身的十分虚弱,不仅不能对木进行克制,反而受到木的反侮,称作“金虚木侮”。 相乘和相侮,都是不正常的相克现象,两者之间是既有区别又有联系的。相乘与相侮的主要区别是:前者是按五行的相克次序发生过强的克制,而形成五行间的生克制化异常;后者是与五行相克次序发生相反方向的克制现象,而形成五行间的生克制化异常。两者之间联系是:在发生相乘时,也可同时发生相侮;发生相侮时,也可同时发生相乘。如:木过强时,既可以乘土,又可以侮金;金虚时,即可受到木的反侮,又可受到火乘,因而相乘与相侮之间存在着密切的联系。《素问·五运行大论》说:气有余,则制已所胜而侮所不胜;其不及,则己所不胜,侮而乘之,己所胜,轻而侮之”。就是对五行之间相乘和相侮及其相互关系作了很好的说明。回答者:忧郁大盗 - 秀才 二级 7-18 19:12提问者对于答案的评价:谢谢大家这么快就给了我答复!您觉得最佳答案好不好? 目前有 3 个人评价 100% (3) 0% (0)

万年历的由来?

要想追寻万年历的由来,那故事得从远古时代的商朝说起……有名樵夫唤做万年,有一天他上山砍柴,砍罢了就坐在树下休息。他眼望著树影出神,心中想的,仍是如何将节令定准的事。不知不觉过了大半个时辰,他才发现地上的树影已悄悄地移动了方位。万年灵机一动,心想,何不利用日影的长短来计算时间呢?回到家后,万年就设计了一个“日晷仪”。可是,一遇上阴雨天,日晷仪又失去效用了。 有一天,万年在泉边喝水,看见崖上的水很有节奏的往下滴,规律的滴水声又启发了他的灵感。回家後,万年就动手做了一个五层的漏壶,利用漏水的方法来计时。这么一来,不管天气阴晴,都可以正确地掌握时间了。有了计时的工具,万年更加用心的观察天时节令的变化。经过长期的归纳,他发现,每隔三百六十多天,天时的长短就会重覆一次。只要搞清楚日月运行的规律,就不用担心节令不准了。万年就带著自制的日晷仪及水漏壶去觐见天子祖乙,说明节令不准与天神毫不相干。祖乙觉得万年说的很有道理,就把万年留下,在天坛前盖起日晷台、漏壶亭,又派了十二个童子供万年差遣。从此以后,万年得以专心致志的研究时令。过了一段日子,祖乙派阿衡去了解万年制历的情况。万年拿出自己推算出的初步成果,说:日出日落三百六,周而复始从头来。草木荣枯分四时,一岁月有十二圆。 阿衡听後,非常忐忑不安,他担心制出准确的历法,得到天子重用,直接的威胁到他的地位。於是阿衡就以重金收买了一名刺客,准备行刺万年。无奈万年全心研究时令,几乎从不离开所住的日月阁。刺客只好趁夜深人静之时,挽起了箭射杀万年。只听得嗖的一声,一箭射中了万年的胳膊,万年应声倒下。童子们高喊抓拿刺客,守卫的兵士及时抓住了刺客,将他扭送天子。 祖乙问明了是阿衡的诡计,就下令将阿衡收押,亲自到日月阁来探望万年。万年就把自己最新的研究成果报告给祖乙:现在申星追上了百星蚕百星,星象复原,子时夜交,旧岁已完,时又始春,希望天子定个节名吧!祖乙说:春为岁首,就叫春节吧。当时祖乙见万年为了制历,日夜劳瘁又受了箭伤,心中不忍,就请他入宫调养身体,万年答道:“多谢天子厚爱,只是目前的太阳历还是草历,不够准确,要把岁末尾时也闰进去。否则,久而久之,又会造成节令失常。为了不负众望,我必须留下来,继续把太阳历定准。”又经过了数十个寒暑,万年精心制定的太阳历终于完成了。当他把太阳历献给祖乙时,已是个白发苍苍的老人了。 祖乙深受感动,就把太阳历定名为万年历,并封万年为日月寿星,以上就是万年历名称的由来。第二个版本相传,在很久以前,有个名叫万年的青年,看到当时节令很乱,想把节令定准。一天,他上山砍柴,坐在树阴下休息,树影的移动启发了他,他设计了一个测日影计天时的晷仪。可是,天阴雨雾,影响测量。后来,山崖上的滴泉引起了他的兴趣,他又动手做了一个五层漏壶。天长日久,他发现每隔三百六十多天,天时的长短就会重复一遍。当时的国君叫祖乙,天气风云的不测,使他很苦恼。 一个名叫阿衡的大臣,为讨好皇上,奏称要设天台敬祭天神。祖乙认为有理,便带领百官去祭天,却无济于事。万年知道后,忍不住就带着日晷和漏壶去见皇上,对 祖乙讲清了日月运行的道理。祖乙听后龙颜大悦,感到有道理。于是把万年留下,在天坛前修建日月阁,筑起日晷台和漏壶亭。并派了十二个童子服侍万年。祖乙对万年说:"希望你能测准日月规律,推算出准确的晨夕时间,创建历法,为天下的黎民百姓造福。"有一次,祖乙传旨要阿衡去了解万年测试历法的进展情况。当他登上日月坛时,看见天坛边的石壁上刻着:日出日落三百六,周而复始从头来。草木枯荣分四时,一岁月有十二圆。阿衡见此,知道万年的历法已研究成功,心中忐忑不安。他万分惧怕万年因创建历法而得宠,国君会怪罪自己提出祭祀天神的主意。于是,他阴谋策划,派了一个刺客去除掉万年。刺客攀上日月阁,见万年正在阁上观察星斗,便张弓搭箭,准备射死他。谁知,刺客被卫士发现,被当场缉拿。祖乙知后,惩处了阿衡,亲自登上日月阁看望万年。万年指着天象,对祖乙说:“现在正是十二个月满,旧岁已完,新春复始,祈请国君定个节吧。”祖乙说:“春为岁首,就叫春节吧。”冬去春来,年复一年。后来,万年经过长期观察,精心推算,制定出了准确的太阳历。当他把太阳历呈奉给继任的国君时,已是满面银须。国君深为感动,为纪念万年的功绩,便将太阳历命名为“万年历”,封万年为日月寿星。以后,人们在过年时挂上寿星图,据说就是为了纪念德高望重的万年的。

基于STM32的电子万年历系统设计

看到这个题目我笑了,很是好提问的到底是何方仙人?这完全是要超凡脱俗,起要成仙的节奏啊。不过,也可能是还在上学的小女孩小男孩,一心想着好好学习,所以,想要找到 个方法来克制自己的青春懵懂的小情愫。坦白说,一个正常人,意思是还有荷尔蒙正常分泌的人,是没有办法对任何异性不动心的。记得前几天我们在一个禅院里做为期几天的闭关修行。给我们上课的就是一个修了一二十年,还算是小有造诣的男性禅师。但在我们上瑜 珈课的时候,傻子都能看得出来,他的视线就没有离开过当时教我们的美女瑜珈老师。哈哈。而且,他当年也会很坦诚的问他的师父,类似于这样的问题: 我们修行人如何有生理反应了,该怎么办?我觉得,这就是一种对自己的诚实。所以,不管你是什么年纪,什么职业,做人,首先就要对自己诚实。接受自己身心很正常 ,很自然,也很健康的现象与反应。如果对自己太残忍,或者太虚伪,那么,也是要付出代价的。我保证。这边也举一个小例子。我一姑姑的儿子。平时不说溺爱吧,也算是把他当宝贝的那种。从小学到上大学,这十多年的时间里,他也从一个儿童成长为一个青年。但他妈妈始终在他面前念叨的一个观点和要求就是,上学不能谈恋爱,千万不能谈恋爱。那感觉有点像故事中,老和尚教小和尚说女人是老虎差不太多。我表弟也是一个非常听话的男生。乖到似乎没有经历过叛逆期的那种。初中,高中,甚至大学,都是老老实实的,本本分分的把时间用于学习上。当然,好像他的学习成绩也就一般一般,并出突出的那种。大学毕业后,他父母急了, 就开始赶着他出去找女朋友了。而他呢,似乎己经丧失了与异性交往的能力或自信。根本就不出门的。听说前几年的竟然突然犯了桃花疯。用科学的名词就是精神分裂。赤身裸体的在村里晃来晃去。从专业的角度来讲,这实实在在是与他青春期以来的 情感 压抑不无关联。从心理学上来讲,喜欢一个人,其实是一种能力,是一种从儿童走向成人的重要的心理能力。在云南孩子在18岁的时候,还会特别举行隆重的成人礼。所以,对异性动心,是一种生而为人的基本能力,一种不可或缺的重要能力。SO,问问自己,还能去压抑吗?

在c语言中使用函数来制作一个万年历,要求,可以知道每个月有多少天,每...

#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <time.h>//是否闰年#define IS_LEAP_YEAR(iYear) (((iYear) % 100 == 0) ? ((iYear) % 400 == 0) : ((iYear) % 4 == 0))int Calendar(int iYear, int iMonth);void main(){//获取今天的日期struct tm *today;time_t ltime;time(&ltime);today = localtime(&ltime);//printf("%d-%02d-%02d %02d:%02d:%02d\n星期%d 当年第%d天\n", //today->tm_year + 1900, today->tm_mon + 1, today->tm_mday, //today->tm_hour, today->tm_min, today->tm_sec, today->tm_wday, today->tm_yday);int iYear = today->tm_year + 1900;int iMonth = today->tm_mon + 1;do {system("cls");int ch = Calendar(iYear, iMonth);if (ch == 27) break;switch (ch){case 75://<--iYear--;break;case 77://-->iYear++;break;case 80://下箭头iMonth++;if (iMonth > 12){iYear++;iMonth = 1;}break;case 72://上箭头iMonth--;if (iMonth < 1){iYear--;iMonth = 12;}break;case 71://HomeiYear = today->tm_year + 1900;iMonth = today->tm_mon + 1;break;}} while (1);}//显示给定年月的日历//返回值为获取的用户按键, 以确定下一步的操作int Calendar(int iYear, int iMonth){int i, j, iDays;//初始化数组w的值为1至31int w[31];for (i = 0; i < 31; i++) w[i] = i+1;//获取本月天数于iDays中switch (iMonth){case 1: case 3: case 5: case 7: case 8: case 10: case 12:iDays = 31;break;case 4: case 6: case 9: case 11:iDays = 30;break;case 2:iDays = IS_LEAP_YEAR(iYear) ? 29 : 28;break;}//显示 日历头printf("\n    %d年%d月 日历\n\n", iYear, iMonth);printf(" 日 一 二 三 四 五 六\n");printf("----------------------\n");//获取参数指定年月的第一天是周几。保存在firstday.tm_wday中struct tm firstday = {0};firstday.tm_year = iYear - 1900;firstday.tm_mon = iMonth - 1;firstday.tm_mday = 1;time_t ltime;ltime = mktime(&firstday);firstday = *localtime(&ltime);//处理1号前的留空j = firstday.tm_wday;//周几for (i = 0; i < j; i++){printf("   ");//3个空格}//显示日历正文for (i = 0; i < iDays; i++){printf("%3d", w[i]);if (++j == 7){printf("\n");//逢七换行j = 0;}}if (j != 0) printf("\n");//获取今天日期time(&ltime);struct tm today = *localtime(&ltime);//显示 日历尾printf("----------------------\n");printf("今天是: %d年%d月%d日\n\n", today.tm_year + 1900, today.tm_mon + 1, today.tm_mday);printf("←: 上一年  →: 下一年\n");printf("↑: 上一月  ↓: 下一月\n\n");printf("Home: 今天  Esc: 退出\n");//获取用户按键 (不用按回车立即返回)fflush(stdin);clearerr(stdin);int c = getch();if (c == 0xe0 || c == 0) c = getch();return c;}

多功能电子万年历中农历是怎么实现的?

农历是每六十年一个轮。也就是通常说的一个甲子年。平年十二个月,大月三十天,小月二十九天,全年354天或355天(一年中哪个月大,哪个月小,年年不同)。由于每年的天数比太阳年约差十一天,所以采用设置闰月的方法使这几年的平均日数尽量的接近365.2422日。因1回归年为12.368个朔望月,368/1000=46/125,所以在一百二十五年中应设置四十六个闰年,但因为这样设闰太过复杂,经推算,7/19最接近0.368,故一般的,在19年里中设置7个闰月,有闰月的年份全年383天或384天。又根据太阳的位置,把一个太阳年分成二十四个节气,以利于农业种植等活动。纪年用天干地支搭配,六十年周而复始。这种历法相传创始于夏代,所以又称为夏历。

c语言设计万年历

这是当时我做的一个小小的课题,希望对你有所帮助#include "stdio.h" /* Required for MS-DOS use */ #define ENTER 0x1C0D /* Enter key */ int year, month, day; static char *days[8] = {" ","Sunday ","Monday ","Tuesday ", "Wednesday","Thursday ","Friday ","Saturday "}; struct TIMEDATE { int year; /* year 1980..2099 */ int month; /* month 1=Jan 2=Feb, etc. */ int day; /* day of month 0..31 */ int hours; /* hour 0..23 */ int minutes; /* minute 0..59 */ int seconds; /* second 0..59 */ int hsecs; /* 1/100ths of second 0..99 */ char dateline[47]; /* date & time toger */ }; static struct TIMEDATE today; main() { char cmonth[3]; char cday[3]; char cyear[5]; double getdays(); double daynumb, numbnow; int weekday, retcode, dayer, i; dayer = datetime(&today); clrscn(); for (i=0;i<3;++i)cmonth[i]='\0'; for (i=0;i<3;++i)cday[i]='\0'; for (i=0;i<5;++i)cyear[i]='\0'; putstr(5,8,14,"Enter date in MM DD YYYY format:"); while (retcode != ENTER) { retcode = bufinp(5,41,13,2,cmonth); if (retcode != ENTER) retcode = bufinp(5,44,13,2,cday); if (retcode != ENTER) retcode = bufinp(5,47,13,4,cyear); } year = atoi(&cyear); month = atoi(&cmonth); day = atoi(&cday); daynumb = getdays(year, month, day); numbnow = getdays(today.year, today.month, today.day); weekday = weekdays(daynumb); if (numbnow - daynumb == 0) printf("\n\n%02d-%02d-%d is",month, day, year); if (numbnow - daynumb > 0) printf("\n\n%02d-%02d-%d was",month, day, year); if (numbnow - daynumb < 0) printf("\n\n%02d-%02d-%d will be",month, day, year); printf(" a %s\n",days[weekday]); } /* end MAIN */ /************************************************************ * GETDAYS - From integer values of year (YYYY), month * * (MM) and day (DD) this subroutine returns a * * double float number which represents the * * number of days since Jan 1, 1980 (day 1). * * This routine is the opposite of GETDATE. * ************************************************************/ double getdays(year, month, day) int year, month, day; { int y,m; double a,b,d, daynumb; double floor(),intg(); /********************************** ** make correction for no year 0 ** **********************************/ if (year < 0) y = year + 1; else y = year; /********************************************************* ** Jan and Feb are months 13 and 14 in this calculation ** *********************************************************/ m = month; if (month < 3) { m = m + 12; y = y - 1; } /************************** ** calculate Julian days ** **************************/ d = floor(365.25 * y) + intg(30.6001 * (m + 1)) + day - 723244.0; /********************************************** ** use Julian calendar if before Oct 5, 1582 ** **********************************************/ if (d < -145068.0) daynumb = d; /************************************* ** otherwise use Gregorian calendar ** *************************************/ else { a = floor(y / 100.0); b = 2 - a + floor(a / 4.0); daynumb = d + b; } return(daynumb); } /* end GETDAYS */ /******************************************************** * GETDATE - This routine takes a double float number * * representing the number of days since Jan 1,* * 1980 (day 1) and returns the year month and * * day as pointer integers * * This routine is the opposite of GETDAYS * ********************************************************/ getdate(numb) double numb; { double a,aa,b,c,d,e,z; double date; date = numb; z = intg(date + 2444239.0); if (date < -145078.0) a = z; else { aa = floor((z - 1867216.25) / 36524.25); a = z + 1 + aa - floor(aa/4.0); } b = a + 1524.0; c = intg((b - 122.1) / 365.25); d = intg(365.25 * c); e = intg((b - d) / 30.6001); day = b - d - intg(30.6001 * e); if (e > 13.5) month = e - 13.0; else month = e - 1.0; if (month > 2) year = c - 4716.0; else year = c - 4715.0; if (year < 1) --year; return; } /* end GETDATE */ /******************************************************** * WEEKDAYS - This routine takes a double float number * * representing the number of days since Jan 1,* * 1980 (day 1) and returns the day of the week* * where 1 = Sunday, 2 = Tuesday, etc. * ********************************************************/ int weekdays(numb) double numb; { double dd; int day; dd = numb; while (dd > 28000.0) dd = dd - 28000.0; while (dd < 0) dd = dd + 28000.0; day = dd; day = ((day + 1) % 7) + 1; return(day); } /******************************************************** * FRACT - This routine takes a double float number * * and returns the fractional part as a double * * float number * ********************************************************/ double fract(numb) double numb; { int inumb; double fnumb; while (numb < -32767) numb += 32767; while (numb > 32767) numb -= 32767; inumb = numb; fnumb = inumb; return(numb-fnumb); } /* end FRACT */ /******************************************************** * FLOOR - This routine takes a double float number * * and returns the next smallest integer * ********************************************************/ double floor(numb) double numb; { double fract(), intg(); double out; out = intg(numb); if (numb < 0 && fract(numb) != 0) out -= 1.0; return(out); } /* end FLOOR */ /******************************************************** * INTG - This routine takes a double float number * * and returns the integer part as a double * * float number * ********************************************************/ double intg(numb) double numb; { double fract(); return(numb - fract(numb)); } /* end INTG */

返回顶部