1

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

4

2 回答 2

1

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

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

Double answer = 154 / 6.0 //154 represents calculated minutes
于 2012-07-25T14:55:44.750 回答
0

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

通过这种方式,可以使用整数数据类型(如 Integer 或BigInteger )来表示时间,具体取决于表示的最大时间。

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

于 2012-07-21T05:11:50.513 回答