将十进制值从跟踪设备转换为DD |时出错MM | YY | HH | MM | SS |女士

时间:2013-09-27 07:06:59

标签: java

以下是我试图将十进制值从我的设备转换为时间戳/时间跨度数据的代码,但我没有得到正确的答案,即我需要获得12:59:59而是我把它作为13:00:00

double dec = 913707042;
int sec = (int)Math.round(dec * 3600);
int deg = sec / 3600;
sec = Math.abs(sec % 3600);
int min = sec / 60;
sec %= 60;

我不明白这段代码有什么问题,请帮助我。

提前致谢。

1 个答案:

答案 0 :(得分:1)

当前存在的问题是:

double dec = 913707042;
int sec = (int)Math.round(dec * 3600);

dec * 3600为您提供的数字太大而无法容纳整数(最多2 ^ 31 - 1),因此您将返回值转换为(int)会失去一些精确度。

然而,真正的问题是你的代码很奇怪:

int sec = (int)Math.round(dec * 3600);
int deg = sec / 3600;
sec = Math.abs(sec % 3600);

为什么不说:

int deg = (int) dec;
int sec = deg % 3600;

如果你这样做,你也应该解决你的损失。