データベースに次の値 '4.6144444444'があり、時刻パターンに'04:36:51 'に適合するBigDecimal
があります。BigDecimal値からミリ秒を切り捨てました
4.6144444444 * 3600 0000 = 16611999.99984/1000 = 16611.99999984秒= 276.866666664分です。
この値0.866666664 * 60 = 51.99999984秒も合計で'04:36:51.99999984 'です。 '0.99999984'の時間値を '4.6144444444'から削除する方法はありますか?
合計を計算するために、これらの値をJasper Reportに追加しています。
0.1197222222 + 4.6144444444 + 0.7480555555 + 0.9475000000 = 6.4297222221 ==> 6時25分46秒999 999 56
0時07分10秒+ 4時36分51秒+ 0時44分52秒+ 0時56: 51 = 06:25:44
また、結果に2秒間の差があります。 JavaやJasperで管理する方法はありますか?ジャスパーの
コード
def duration = rowTemp[7];
def durationMiliseconds = duration * 3600000;
def durationSeconds = durationMiliseconds/1000;
def durationMinutes = (durationSeconds/60).toString();
String[] durationMinutesSplitt = durationMinutes.split(".");
def secondsPart = Double.parseDouble("0." + durationMinutesSplitt[1]);
def secondWithMiliSeconds = secondsPart * 60;
ジャスパーで
私は次のようvlaueをレンダリングしています:
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="252" y="2" width="149" height="18" />
<box topPadding="2" leftPadding="2" bottomPadding="2" rightPadding="2"/>
<textElement textAlignment="Right" verticalAlignment="Middle">
<font size="8" isBold="true" pdfFontName="Helvetica-Bold"/>
<paragraph lineSpacing="Single"/>
</textElement>
<textFieldExpression><![CDATA[org.apache.commons.lang.time.DurationFormatUtils.formatDuration((long)$V{group1DurationStay}.doubleValue() * 3600000, "HH:mm:ss")]]></textFieldExpression>
</textField>
は、あなたが今計算を行う方法のコードのビットを示してもらえますか? – Roelant
@ Roelant:自分のコードを追加しました – water
元の値4.614444444(これは浮動小数点の扱いが難しい)または最終結果04:36:51(これは簡単です)から削除しますか? :) – Roelant