我需要將時間(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