准确地表示java和groovy中的时间

时间:2012-07-21 03:34:50

标签: java groovy

我需要对整个和/或十分之一小时表示的时间单位进行计算,并想知道BigDecimal是否适合它的数据类型。从我收集的内容来看,BigDecimal适用于货币计算,所以我认为在我必须处理1.5 + 0.6类型的简单数学的情况下也是如此。我的想法是否正确?

2 个答案:

答案 0 :(得分:1)

简短的回答是肯定的。如果您正在执行十进制计算,那么BigDecimal是一个很好的类,用于避免任何类型的舍入错误。但是,它可能不是最有效的方式。如果性能不是问题,那么我会说BigDecimal将满足您的目的。

另一种方法是在几分钟内执行计算,然后将答案除以6以提供结果。在这种情况下,您可以使用整数并延迟进行昂贵的计算直到结束。当你除以6时,你可以将你的答案转换为双倍。

Double answer = 154 / 6.0 //154 represents calculated minutes

答案 1 :(得分:0)

因为你提到你只需要工作十分之一小时,所以你可以用这个最小时间单位的倍数表示,即6分钟。

这样就可以用整数数据类型表示时间,如Integer或BigInteger,具体取决于表示的最长时间。

你甚至可以编写一个包装(Big)Integer的自定义类,并提供格式化为字符串的方法,其他类型之间的转换等等。