如何将浮点数转换为erlang时间格式(反之亦然)?

时间:2012-11-13 10:53:00

标签: erlang

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

我可以这样做,例如:

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

但我正在努力将这个数字转换回时间格式。我总的想法除以1000000和圆,但我得到四舍五入的错误。 e.g。

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

如果我能准确地做到这一点,我可以采用类似的步骤来获得SecondsMicroseconds

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您可以使用erlang:trunc代替erlang:round

答案 1 :(得分: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时引入的舍入误差)