我需要将时间(02.35)的浮点数表示法转换为分钟数。从Prolog获取浮点数的十进制数
所以我得到02通过地板函数(地板(02.35)= 2),然后乘以60
我怎样才能获得从浮点数(02.35)十进制数(35)?
谢谢!
我需要将时间(02.35)的浮点数表示法转换为分钟数。从Prolog获取浮点数的十进制数
所以我得到02通过地板函数(地板(02.35)= 2),然后乘以60
我怎样才能获得从浮点数(02.35)十进制数(35)?
谢谢!
所以我尝试了不同的方法,这个工程。
time_to_minutes(TimeAsDouble, TimeInMinutes):-
HH is floor(TimeAsDouble),
MM is integer(100*(TimeAsDouble-HH)),
TimeInMinutes is ((HH*60) + MM).
编辑:修复了代码
浮点数是受精度问题。有理数似乎更适合这种情况,或者,正如@repeat已经提出的那样,可能使用两个整数分量来表示小时和分钟? – mat
@mat。其实,我赞成使用花车来获取日期时间信息!但代表应该更好地避免差距/歧义。在这种情况下,浮标的有限精度不是问题,IMO。 – repeat
在这种情况下,我不推荐使用浮点数:日期和时间通常以小数表示,很多十进制数如'0.1'不能用有限浮点数表示。例如:??格式(“〜20f”,[0.1])。,产生:“0.10000000000000000555”。在我看来,理性或整数元组是更好的选择。 – mat