float
およびint
データ型に対する Java 数学演算に関する質問。
2 つの日付の間の年月日差を計算する必要があります。
コード:
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Object date = obj.getInfoItem().getInfoValue();
Date today = new Date();
Date birthDate = null;
float dateDiff;
int age0, age1;
try {
// unify the date format
birthDate = format.parse(date.toString());
today = format.parse(format.format(today));
} catch (ParseException e) {
e.printStackTrace();
}
// calculate the age in years with round
dateDiff = today.getTime() - birthDate.getTime();
age0 = (int)((dateDiff / (24 * 60 * 60 * 1000)) / 365);
age1 = (int)(dateDiff / (365 * 24 * 60 * 60 * 1000));
Java の日付の差はミリ秒単位で計算されるため、計算後にハウスキーピング作業を行い、受信した結果をミリ秒から年に変換する必要があります。
コードの実行後、デバッガーで次の結果が得られました。
dateDiff = 8.4896639E11
age0 = 26
age1 = 577
age0
は正しい結果です。
age0
とに対する演算age1
は数学的に等しいのに、結果が異なるのはなぜですか? (float / (a\*b\*c)) / d
« » と « (float / (a\*b\*c\*d))
»の操作に違いがあるのa
はb
なぜですか。c
d
int