[解決済み] 1000 * 60 * 60 * 24 * 30 の結果が負の数になる[複製]
2022-02-10 22:16:20
質問
ミリ秒を掛けて30日を計算しようとしていますが、days_30の値が常に負数になってしまい、理由がわかりません。
何かご提案があれば、ぜひお願いします。
CODE SNIPPETです。
// check to ensure proper time has elapsed
SharedPreferences pref = getApplicationContext()
.getSharedPreferences("DataCountService", 0);
long days_30 = 1000 * 60 * 60 * 24 * 30;
long oldTime = pref.getLong("smstimestamp", 0);
long newTime = System.currentTimeMillis();
if(newTime - oldTime >= days_30){
days_30 の値の結果です。-1702967296
追伸
double days_30 = 1000 * 60 * 60 * 24 * 30;
double oldTime = pref.getLong("smstimestamp", 0);
double newTime = System.currentTimeMillis();
if(newTime - oldTime >= days_30){
結果は、より小さい、しかしまだ負の数です。-1.702967296E9
解き方は?
を掛け算しています。
ints
を一緒にすると、オーバーフローが発生するのは
の場合、最大整数は
2^31 - 1
. 乗算の後にのみ、変換されます。
long
. 最初の数字を
long
.
long days_30 = (long) 1000 * 60 * 60 * 24 * 30;
を使用するか、または
long
リテラルを使用します。
long days_30 = 1000L * 60 * 60 * 24 * 30;
これにより、強制的に
long
の演算を最初から行う。
関連
-
[解決済み】「error: '.class' expected」の意味と修正方法について
-
[解決済み】Javaでユーザー入力を待機させる方法
-
[解決済み】 executeQuery()でデータ操作文が発行できない。)
-
[解決済み] Javaで数値を小数点以下n桁に丸める方法
-
[解決済み] 簡単な面接問題が難しくなった:1~100の数字が与えられたとき、ちょうどk個の数字が欠けていることを見つけなさい。
-
[解決済み] JavaScriptで、数値が精度を失うことなく到達できる最も高い整数値は何ですか?
-
[解決済み] 演算子 *, /, +, -, % を使わずに 3 で割る。
-
[解決済み] ある数字が2の累乗かどうかを確認する方法
-
[解決済み】JavaScriptの%(modulo)は負の数に対して負の結果を与える
-
[解決済み] 負の数を正にする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー:'if'のない'else'エラー
-
[解決済み】「'void' type not allowed here」エラーの原因とは?
-
[解決済み】不正な反射的アクセスとは?
-
[解決済み】デフォルトのキーストアファイルが存在しない?
-
[解決済み】Javaを包含するクラスではないのか?
-
[解決済み] java.sql.SQLException を取得しました。ResultSet が終了した後の操作は許可されません。
-
[解決済み】予期しない型エラー
-
[解決済み] エラー - trustAnchors パラメータは空であってはなりません。
-
[解決済み】接続Java - MySQL : 公開鍵の取得は許可されていません。
-
[解決済み】Javaは整数のアンダーフローやオーバーフローをどのように処理し、どのようにチェックするのでしょうか?