//date is a java.util date
//date.getTime() = 1485462073669
int days = 3600;
long time = date.getTime() + (days * 24 * 60 * 60 * 1000L);
この結果、時間= 344094777669になります。 可変日数をキャストすると、結果は異なります。なぜこのJava式は最終値をlong型にキャストしないのですか?
date.getTime() + ((long) days * 24 * 60 * 60 * 1000L)
これは、時間になります= 4639062073669
なぜ日を正しく評価する式のため、long型としてキャストする必要があるのでしょうか?
http://stackoverflow.com/questions/1494862/multiplying-long-values –
なぜこのようなことが起こったのか、もっと興味があります。 2番目の式は正しいですが、私はなぜキャストを強制する必要があるのだろうかと思っています。最初のリンクによると、すべての数学は最大のデータ型で行われるので、すべての変数が長くキャストされるべきではないでしょうか?特に、最後の数値はlong型として定義されているためです。 –
日付が同じオブジェクトの場合、このコードがどのように異なる結果をもたらすかはわかりません。 intをlong型にキャストすると何も変わらないはずです。どちらの場合も日付が同じインスタンスであることを確認していますか? A – davidxxx