0

我正在尝试将 erlang 时间格式元组 ,{megasec,sec,microsec}转换为浮点数并再次返回。

我可以这样做,例如:

{Megasec,Sec,Usec} = erlang:now().
Total = Megasec*1000000+Sec+Usec/1000000. 
1352802601.427

但我正在努力将这个数字转换回时间格式。我有一个大致的想法是除以 1000000 并舍入,但我得到舍入错误。例如

Mega = erlang:round(Total/1000000).
1353

如果我能准确地得到这个,我可以应用类似的步骤来获取SecondsMicroseconds.

有任何想法吗?

4

2 回答 2

3

您可以使用erlang:trunc而不是erlang:round.

于 2012-11-13T11:01:36.137 回答
0

按照@Falco Hirschenberger 的建议,我是这样做的:

Mega = erlang:trunc(Total/1000000).
1352
Sec = erlang:trunc(Total - Mega*1000000).
802601
Usec = erlang:round((Total - Mega*1000000 - Sec)*1000000).
427000

笔记。我不得不用erlang:round得到Usec(否则答案是427000.0457763672- 我认为这是由于我除以 1000000 时引入的舍入误差)

于 2012-11-13T11:21:48.343 回答