:BigDecimalの中 Time duration
(精度38、スケール6) と TimeUnitsType enum
(日、時間、分、またはSECONDS)。変換時間(ミリ秒)の持続時間(BigDecimal値+時間単位)長い
そして結果としてlong
値(ミリ秒)を取得する必要があります。私が理解として、それが0に規模を設定するよう は、BigDecimal
からlongValue()
方法は、正確に、ここでは動作しません、とlongValueExact()
がスローされますArithmeticException("Overflow")
(なぜなら精度 - > 19スケール)
public static long convertTimeToMillis(BigDecimal time, TimeUnitsType timeUnitsType) {
long timeLong = time.longValue();
switch (timeUnitsType) {
case DAYS:
return TimeUnit.DAYS.toMillis(timeLong);
case HOURS:
return TimeUnit.HOURS.toMillis(timeLong);
case MINUTES:
return TimeUnit.MINUTES.toMillis(timeLong);
default:
return TimeUnit.SECONDS.toMillis(timeLong);
}
}
は、だから私は、個々の計算をする必要があります各ケースごとに個別に手伝ってくれませんか? BigDecimalの操作は私が少し前に作業していないので少し怖いです:)そして残りの作業で精度が必要です。
P.S. Javaのバージョンは1.6
「BigDecimal time」が表すものを正確に定義してください。 'time'の持続時間はtimeUnitsTypeの単位で表されていますか、それとも' timeUnitsType'のそれと同じ持続時間に変換されています。 – xtratic